图像处理与图像识别笔记(五)图像增强2

本文介绍了图像处理中的空域滤波增强,包括图像平滑和锐化的概念及方法。平滑主要通过邻域平均和中值滤波实现,中值滤波在去噪的同时能较好地保留边缘。锐化则涉及Roberts算子、Sobel算子和拉普拉斯算子,用于提取图像边缘和细节。
摘要由CSDN通过智能技术生成

上一节中我们讲解了灰度变换的原理以及实现方法,本节我们讲解空域滤波增强,与灰度变换相同,空域滤波增强是一种空域处理的方法,不过空域滤波不是一种对点做处理的方法,而是利用相邻像素间的关系进行增强。空域滤波可以按照增强效果的不同分为平滑锐化两类,又都可分为线性与非线性方法,线性滤波利用空域卷积来实现。接下来我们对平滑与锐化一一进行讲解。

一、图像平滑

图像平滑的目的是抑制和消除噪声,我们首先介绍一种线性平滑方法—邻域平均,平滑算子为

A A A表示已以 ( i , j ) (i,j) (i,j)为中心的邻域点的集合, M M M A A A中像素点的总数,邻域平均的实现代码如下:

import cv2
import numpy as np 
import matplotlib.pyplot as plt 
import pylab

img = cv2.imread('Lena.jpg',1)
kernel = np.ones((5,5),np.float32)/25	#5×5卷积核,邻域平均
res = cv2.filter2D(img,-1,kernel)
cv2.imshow('res',res)
cv2.waitKey(0)

opencv提供cv2.filter2D()函数来对图像进行卷积操作

dst = cv2.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
#dst:输出图像
#src:输入图像
#ddepth:输出图像深度,-1为与原图相同
#kernel:卷积核
#anchor:锚点,默认为(-1, -1),指卷积核的中心点
#delta:输出结果时的附加值,默认为0
#borderType:边界模式,默认为BORDER_DEFAULT

我们采用不同大小的卷积核,依次对源图像进行卷积操作,结果如下,

卷积核半径越大,图像平滑的效果越明显,图像越来越模糊。
除了上述线性平滑方法之外,还有非线性平滑滤波器,包括中值滤波百分比滤波最大值滤波最小值滤波,我们特别讲解一下中值滤波,中值滤波是将选定的奇数像素窗口内的各像素灰度按大小排队,用中间的灰度值代替窗口中原图像中间位置的像素,因此是一种非线性滤波。中值滤波对既保留边缘又要求去噪的任务很有用,尤其对椒盐噪声
我们为Lena添加椒盐噪声,分别对其进行邻域平均与中值滤波,实现代码如下,

import cv2
import numpy as np 
import matplotlib.pyplot as plt 
import random
import pylab

def cvToplt(img):	#经过颜色转换后plt才能输出彩色图像
	b,g,r = cv2.split(img)  
	img = cv2.merge([r,g,b])
	return img  
	
def main():	
	img = cv2.imread('Lena.jpg',1)
	x,y,z = img.shape
	for i in range(5000):	#添加椒盐噪声
		row = random.randint(0,x-1)
		col = random.randint(0,y-1)
		img[row][col] = 255
	kernel = np.ones((5,5),np.float32)/25
	res = cv2.filter2D(img,-1,kernel)	#邻域平均
	res2=  cv2.medianBlur(img,5)	#中值滤波
	plt.subplot('131'),plt.imshow(cvToplt(img)),plt.title('Original')
	plt.subplot('132'),plt.imshow(cvToplt(res)),plt.title('mean')
	plt.subplot('133'),plt.imshow(cvToplt(res2)),plt.title('median')
	pylab.show()

if __name__ =="__main__":
	main()

结果如下,

经过对比发现,中值滤波的去噪效果好,且能够较好的保留图像边缘,邻域平均的平滑效果更好但去噪效果相对较差

二、图像锐化

对正常的图像,通过锐化提取边缘、轮廓、线条等信息,供进一步识别。通过加重图像轮廓克服降质,以达到更好的视觉效果。常见的锐化算法包括Roberts算子Sobel算子、Prewitt算子、拉普拉斯算子

(1)基于一阶微分的图像增强—梯度法
我们把图像看成二维离散函数,为了提取图像的边缘,我们需要计算图像的梯度,梯度是方向导数取最大值的方向的向量 ,图像的边缘即为图像梯度较大的地方
梯度用一个二维列向量来定义,

                

对于离散的二维图像,为计算方便,用绝对值代替幅值,用差分代替微分:
( 1 ) (1) 1
为了更好的理解,我们考虑一个3×3的图像区域,

z z z代表灰度级,由式 ( 1 ) (1) 1,在点 z 5 z_5 z5 ▽ f = ∣ z

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值