数字图像处理期末速通

图像的基本运算

# 图像的读取
img = cv2.imread('img.jpg')
# 图像的显示
cv2.imshow('img',img)
# 图像的生成
img = np.random.randint(0,256,size=[4,4],dtype=np.uint8)
# 图像的融合
dst = cv2.addweighted(img1,0.7,img2,0.3,0)
# 加法运算
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
dst = cv2.add(img1,img2)
cv2.imshow('dst',dst)
# 减法运算
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
dst = cv2.subtract(img1,img2)
cv2.imshow('dst',dst)
# 乘法运算
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
dst = cv2.multiply(img1,img2)
cv2.imshow('dst',dst)
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
dst = cv2.divide(img1,img2)
cv2.imshow('dst',dst)
# 按位与运算,取出掩模内的图像
dst = cv2.bitwise_and(img1,img2)
# 按位或运算,删掉掩模内的图像
dst = cv2.bitwise_or(img1,img2)
# 按位非运算,对图像取反
dst = cv2.bitwise_not(img)
# 按位异或运算
dst = cv2.bitwise_xor(img1,img2)

 图像的几何运算

# 图像平移
M = np.float32([[1,0,50],[0,1,30]]
rows,cols = img.shape[0:2]
dst = cv2.warpAffine(img,M,(cols,rows))
# 仿射变换
M = cv2.getAffineTransform(pts1,pts2)
dst = cv2.warpAffine(img,M,(cols,rows))
# 图像缩放
dst1 = cv2.resize(img,None,fx=1.2,fy=1.2)

height,width = 160,160
dst2 = cv2.resize(img,(height,width))
# 图像旋转
rows,cols = img.shape[0:2]
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)
# 镜像变换
img1 = cv2.flip(img,0)  # 绕X轴翻转
img2 = cv2.flip(img,1)  # 绕Y轴翻转
img3 = cv2.flip(img,-1)  # 绕XY轴翻转
# 透视变换
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(640,400))

 彩色图像的分离与合并

# 彩色图像的分离
b,g,r = cv2.split(img)
cv2.imshow('BLUE',b)

# 彩色图像的合并
merged = cv2.merge([b,g,r])
cv2.imshow('merged',merged)
# 颜色空间转换

# RGB:红、绿、蓝。
# HSV:色调(Hue)、饱和度(Saturation)、亮度(Value)。
# GRAY:灰度图像。

# 将图像从 RGB 转换到 HSV
img = cv2.cvtColor(img,cv2.COLOR_RGB2HSV)

# 将图像从 RGB 转换到灰度
img = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

 直方图均衡化

# 直方图均衡化
img = cv2.imread('img.jpg')
dst = cv2.equalHist(img)

 理解滤波原理

# 滤波的核心原理是通过卷积操作,将图像与一个滤波器进行卷积运算,从而改变图像的像素值。

# 根据代码判断滤波方法:
# cv2.blur():均值滤波。
# cv2.boxFilter():方框滤波。
# cv2.GaussianBlur():高斯滤波。
# cv2.medianBlur():中值滤波。
# cv2.bilateralFilter():双边滤波。
# cv2.Laplacian():拉普拉斯滤波。
# cv2.filter2D():自定义滤波。

滤波过程会对图像产生以下影响:

 平滑效果 

  • 均值滤波:对图像进行整体平滑,但会模糊边缘。
  • 高斯滤波:相比均值滤波,更好地保留边缘信息,因为权重按照高斯分布。
  • 中值滤波:对椒盐噪声非常有效,但可能使图像稍微模糊。
  • 双边滤波:在平滑时更好地保留边缘信息,但计算复杂度较高。

边缘保留

  • 高斯滤波双边滤波比均值滤波更好地保留边缘信息。
  • 中值滤波由于取中值,不会受到极端值(噪声)的影响,因此对边缘的保留效果较好。

噪声去除

  • 均值滤波和高斯滤波对高斯噪声有较好的去除效果。
  • 中值滤波对椒盐噪声(随机出现的极端值)非常有效。
  • 双边滤波对噪声去除和边缘保留有较好的平衡。

计算复杂度

  • 均值滤波和高斯滤波计算速度较快。
  • 中值滤波在计算中值时需要排序,速度稍慢。
  • 双边滤波计算复杂度最高,因为它需要同时考虑空间距离和颜色差异。

锐化效果

  • 锐化滤波(拉普拉斯算子)可以增强图像的边缘,但可能会放大噪声。

图像复原与逆滤波

图像复原是图像处理中的一个重要领域,旨在从受损的图像中恢复出原始图像。逆滤波是图像复原中的一种经典方法,主要用于从退化图像中恢复原始图像,退化过程可以用一个退化函数来表示,逆滤波的目标是通过逆运算恢复原始图像。

霍夫变换

霍夫变换的核心思想是:将图像空间中的形状问题转换为参数空间中的投票问题。通过在参数空间中寻找峰值,可以确定图像空间中的几何形状。

彩色图像直方图 

# 绘制直方图
dst = cv2.calcHist([img[:,:,0]],[0],None,[256],[0,256])
plt.plot(dst,color='b')
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值