HUST SE-DIP2024考试
基本和老师划的重点一致,需要理解和背诵。
简答
数据量的计算
5个纹理描述子
同时对比度,原因
自适应局部降噪滤波,优点
基于区域生长的彩色图像分割方法
离散傅里叶卷积变化公式和应用傅里叶描述子描述纹理的方法
计算
通过概率密度函数解释直方图均衡化原理,直方图均衡化步骤,具体数值的均衡化
二维离散卷积的公式,计算步骤,具体数值的操作
程序
消除椒盐噪声的方法,消除周期性噪声的方法,opencv代码(图像的读取,显示,处理,保存)
数字图像处理复习重点
一. 图像处理的基本概念与术语
- 数字图像:以二位数字形式表现的图像,其单元为像元
- 数字图像处理:利用计算机进行图像处理
- 亮度函数 入射分量 反射分量 I = f ( x , y , z , γ , t ) , i ( x , y ) , r ( x , y ) I=f(x,y,z,\gamma,t), i(x,y), r(x,y) I=f(x,y,z,γ,t),i(x,y),r(x,y)
- 图像分辨率 图像深度 灰度级 动态范围 :图像中可分辨的最小细节 在位图图像中,表示各像素点亮度或彩色信息的二进制位数 2的整数次幂 灰度跨越的值域
- 色彩的基本属性 RGB HSI :红绿蓝三原色(加色混合模型) 色调,饱和度,亮度
- 主观颜色 安全色 : 216种安全色
- 灰度直方图 累计直方图 连续图像幅度的密度函数,幅度分布函数 :横坐标为灰度级的值,纵坐标为某个灰度级出现的次数的统计图
- 点运算 代数运算 几何运算:比如改变亮度,对比度等 图像之间的点对点运算 设计到空间位置变化,如灰度插值
- 双线性插值:使用4个最近邻的灰度来计算给定位置的灰度
- 线性系统 移不变系统 线性移不变系统:叠加原理和齐次原理 如果输入序列进行移位,则输出序列进行相应的移位 具有移不变特性的线性系统
- 单位冲击 单位冲击响应:狄拉克函数 系统的输入是单位冲击时得到的输出
- 卷积
- 图像幅值信息量 信息熵
- 积分变换
- 傅里叶变换对 傅里叶振幅谱 傅里叶相位谱 傅里叶能量谱 :振幅谱 ∣ F ( u , v ) ∣ |F(u,v)| ∣F(u,v)∣相位谱 ϕ ( u , v ) = a r c t g I ( u , v ) R ( u , v ) \phi(u,v)=arctg\frac{I(u,v)}{R(u,v)} ϕ(u,v)=arctgR(u,v)I(u,v)能量谱 E ( u , v ) = ∣ F ( u , v ) ∣ 2 E(u,v)=|F(u,v)|^2 E(u,v)=∣F(u,v)∣2
快速傅里叶变换FFT- 图像增强技术 图像复原技术:主观 客观
- 动态范围 灰度级
- 直方图均衡化 直方图规定化 图像平滑 图像锐化
- 空域增强(滤波) 频域增强(滤波) 同态增强(滤波)
数字压缩图像的均方信噪比香农信息保持定理 图像冗余度 编码效率有损压缩 无损压缩率失真理论- 假色彩与伪色彩
影像融合- 图像腐蚀、膨胀、闭操作、开操作、边界提取、区域填充、连通区域提取
二. 典型图像处理的基本过程及相关硬件设备、主要内容
三. 数字图像处理的基本运算(点运算、代数运算、几何运算),图像合成
四. 数字图像处理所设计的主要数学工具
- 直方图 幅度密度函数 概率分布
- 卷积
- 积分变换(傅里叶变换、
DCT等) - 形态学图像处理
五. 图像增强的基本方法
- 直方图增强(均衡,规定),包括基本原理
- 平滑:均值滤波 中值滤波 低通滤波 多图像平均法 自适应滤波器(局部降噪、中值滤波)修改的阿尔法均值滤波器
- 锐化:微分锐化 高通锐化
- 同态滤波
六. 图像退化的数学模型及复原中的主要问题
运动模糊图像复原方法
噪声估计
七. 图像压缩与编码(不考)
八. 形态学图像处理
膨胀、腐蚀、闭操作、开操作、填充、边缘提取、击中与击不中
膨胀结构元必须先反射
闭操作:填充空洞,恢复目标尺寸
开操作:去除毛刺,恢复目标尺寸
九. 图像分割
图像分割:把图像分成各具特性的区域并提取出感兴趣目标的技术和过程
点检测与线检测
边缘检测: 梯度算子 拉普拉斯算子 高斯拉普拉斯算子 Canny算子
门限值分割:全局门限 局部门限 自适应门限 自动确定门槛值的方法:
T
=
u
1
+
u
2
2
T=\frac{u_1+u_2}{2}
T=2u1+u2
彩色图像分割方法 (RGB与HSI空间分割)
区域生长,区域分裂与合并
形态学分水岭算法
十. 图像表示
链码 形状数 边界描述方法 纹理描述子 灰度共生矩阵 傅里叶描述子(边界、纹理)
真题演练
参考https://blog.youkuaiyun.com/weixin_50321513/article/details/127678847
简答题(5*4)
1.图像灰度分辨率是什么?灰度分辨率低有什么影响?
灰度级中可分辨的最小变化(图像中可以区分的灰度级别数量)。减小文件大小和处理实践,但会降低图像的精细程度和色彩还原的准确性。
2.安全色是什么?有什么作用?
安全色是一组特定的颜色值,它们在所有主流浏览器和平台上都能保持一致性。以确保在不同的设备和平台上都能呈现出一致的颜色效果
216种稳定色中RGB的值分别为:0,51,102,153,204,255;这样6*6*6=216种颜色。
3.什么是线性移不变系统?它与卷积之间的关系是什么?
具有移不变系统的线性系统成为线性移不变系统。移不变:如果输入序列进行移位,则输出序列进行相应的移位。线性:满足叠加原理和齐次原理。
线性移不变系统的输出可以通过输入信号与该系统的冲击响应的卷积得到。
4.什么是灰度动态范围?当图像动态范围低的时候,怎么扩张图像的灰度动态范围?
灰度动态范围:灰度级取值范围
直方图均衡化
问答题(8*5)
根据给定条件计算均值滤波,写出计算均值滤波的过程。
均值滤波的过程:
在图像上对待处理的像素给一个模板,该模板包括了其周围的邻近像素。将模板中的全体像素的均值来替代原来像素值。
某图像受到线性移不变系统 h(x,y)的影响,以及加性噪声 n(x,y),最终得到 g(x,y), 请写出还原原始图像 f(x,y)的模型,以及需要注意的两个点。
线性移不变的图像退化模型:
g
(
x
,
y
)
=
f
(
x
,
y
)
⊛
h
(
x
,
y
)
+
n
(
x
,
y
)
g(x,y)=f(x,y)\circledast h(x,y)+n(x,y)
g(x,y)=f(x,y)⊛h(x,y)+n(x,y)
其中$\circledast $为卷积运算。
G
(
x
,
y
)
=
F
(
u
,
v
)
⋅
H
(
u
,
v
)
+
N
(
u
,
v
)
G(x,y)=F(u,v) \cdot H(u,v)+N(u,v)
G(x,y)=F(u,v)⋅H(u,v)+N(u,v)
- 确定引起退化的点扩散函数困难
- 由于收到噪声影响,是一个病态的积分方程。
写出形态学中图像填充的步骤以及迭代算法
- 所有非边界(背景)点设为0,将1赋给p开始
- X k = ( X k − 1 ⊕ B ) ∩ A c X_k = (X_{k-1}\oplus B)\cap A^c Xk=(Xk−1⊕B)∩Ac, X 0 = p , B X_0=p, B X0=p,B为结构元素
- 迭代直到 X k = X k − 1 X_k=X_k-1 Xk=Xk−1时,结束
什么是全局阈值分割?写出自适应得到分割阈值T的一个算法。
全局阈值分割:通过判断图像每一个像素的灰度值,实现目标与背景的区分。
- 初始化T
- 用T分割图像,生成两组数据 G 1 , G 2 G_1,G_2 G1,G2
- 求两组数据的平均灰度值 u 1 , u 2 u_1,u_2 u1,u2
- 计算新的门限值 T = ( u 1 + u 2 ) / 2 T=(u_1+u_2)/2 T=(u1+u2)/2
- 重复2-4,知到迭代得到的T值之差小于参数 t 0 t_0 t0
- 解释初始值和参数 t 0 t_0 t0的选择
请写出四个以上的纹理描述子
均值、标准差、平滑度、一致性、熵、灰度共生矩阵
计算题(16)
给定了一个直方图,进行均衡化(8分) 规定化(8分)
综合题(5+5+5+9)
一阶差分求图像边缘,过程
Roberts算子、Prewitt算子和Sobel算子
二阶差分算子求图像边缘过程,与高斯拉普拉斯算子的联系
Laplacian算子
联系:高斯拉普拉斯算子先用高斯算子对图像进行平滑,抑制噪声,然后对平滑后的图像使用拉普拉斯算子求边缘
使用Canny算子计算图像边缘,过程
- 高斯滤波
- 计算梯度幅值和方向
- 梯度非极大值抑制(NMS)
- 双阈值提取边缘
使用python-opencv处理图像的过程(包括图片读入、处理、展示、存储的过程)
import cv2
import numpy
# 读入
img = cv2.imread('test.jpg', 0)
# 处理
new_img = cv2.add(img, 80) # 亮度增加80
# 展示
cv2.imshow('image', img)
cv2.imshow('new_image', new_img)
# 存储
cv2.imwrite('new_test.jpg', new_img)
# 关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
2023年程序题为图像模板匹配
Open-CV常用函数代码
# 视频读取
cv2.VideoCapture()
# 视频保存
fourcc = cv2.VideoWriter_fourcc(*'XVID')# 注意编码器
cv2.VideoWrite('output.avi',fourcc, 20.0, (640,480))
# 绘图
cv2.line(img,(0,0),(511,511),(255,0,0),5)
cv2.circle(img,(447,63), 63, (0,0,255), -1)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)
# 创建窗口
cv2.nameWindow('frame')
# 处理鼠标点击事件
cv2.setMouseCallback('frame',caption)
# 图像加法(减法)
cv2.addWeighted(img1,0.7,img2,0.3,0)
# 亮度增减
cv2.add(img,80)
cv2.substract(img,80)
# 图像乘法
cv2.multiply(img,1.5)
# 绘制直方图
plt.hist(img.ravel(),256,[0,256])
# 直方图均衡化
equ = cv2.equalizeHist(img)
res = np.hstack((img,equ))
# 均值滤波
cv2.blur(img,(3,3))
# 中值滤波
cv2.medianBlur(img,5)
# 高斯滤波
cv2.GaussianBlur(img,(5,5),0)
# 锐化
laplacian=cv2.Laplacian(img,cv2.CV_64F)
sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
# 图像匹配
cv2.matchTemplate(img,template,method)
# FFT IFFT
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 中间处理
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
# 腐蚀
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
# 膨胀
dilation = cv2.dilate(img,kernel,iterations = 1)
# 开运算
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# 闭运算
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
# 形态学梯度
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)