主要内容

减少图像梯度中的噪声

这个例子演示了如何减少与计算图像梯度相关的噪声。图像梯度用于突出图像中有趣的特征,并用于许多特征检测算法,如边缘/角落检测。降低梯度计算中的噪声是检测精确特征的关键。

将图像读入工作区并将其转换为灰度。

originalImage = imread(“yellowlily.jpg”);originalImage = rgb2gray(originalImage);imshow (originalImage之下)

图中包含一个轴对象。axis对象包含一个image类型的对象。

为了模拟这个例子中的噪声,在图像中添加一些高斯噪声。

noisyImage = imnoise(原始图像,“高斯”);imshow (noisyImage)

图中包含一个轴对象。axis对象包含一个image类型的对象。

计算梯度的大小,使用imgradient而且imgradientxy功能。imgradient求出梯度大小和方向,然后imgradientxy找到方向图像梯度。

sobelGradient = imgradient(noisyImage);imshow (sobelGradient[])标题(“索贝尔梯度幅度”

图中包含一个轴对象。标题为Sobel Gradient Magnitude的axis对象包含一个image类型的对象。

观察梯度星等图像,很明显,图像梯度是非常嘈杂的。在梯度计算前进行平滑处理,可以减小噪声的影响。imgradient已经通过使用Sobel梯度算子为少量噪声提供了这种能力。Sobel梯度算子是3x3滤波器,如下所示。可以使用fspecial函数。

Hy = -fspecial(“索贝尔”
hy =3×31 -2 -1 0 0 0 1 2 1
Hx = hy'
hx =3×3-1 0 1 -2 0 2 -1 0 1

沪元过滤器沿垂直方向计算梯度,同时在水平方向平滑。hx在垂直方向上平滑,并沿水平方向计算梯度。的“普瑞维特”而且“罗伯特”方法选项也提供此功能。

即使使用Sobel, Roberts或Prewitt梯度算子,图像梯度也可能太过嘈杂。为了克服这个问题,在计算图像梯度之前使用高斯平滑滤波器平滑图像。使用imgaussfilt平滑图像的函数。高斯滤波器的标准差随平滑程度的变化而变化。由于平滑是由高斯滤波处理的,所以可以使用中心或中间差分梯度算子。

σ = 2;smoothImage = imgaussfilt(noisyImage,sigma);smoothGradient = imgradient(平滑图像,“CentralDifference”);imshow (smoothGradient[])标题(“平滑梯度幅度”

图中包含一个轴对象。标题为Smoothed Gradient Magnitude的axis对象包含一个类型为image的对象。

另请参阅

|||

相关的话题