MATLAB:用于边缘检测的高斯拉普拉斯滤波器
高斯滤波器是图像处理中用于模糊或平滑图像的线性滤波器。它以高斯函数命名,用于定义滤波器的形状。高斯滤波器通常用于减少图像中的噪声和细节,使其更适合进一步处理或分析。
高斯拉普拉斯 (LoG) 滤波器是图像处理中常用的图像增强和边缘检测滤波器。它是两个滤波器的组合:高斯滤波器和拉普拉斯滤波器。高斯滤波器用于平滑图像并降低噪声,而拉普拉斯滤波器用于检测边缘。
高斯拉普拉斯滤波器对于检测图像中不同尺度的边缘非常有用。通过改变高斯滤波器的标准差,您可以控制检测边缘的比例。较小的标准差检测更精细的细节,而较大的标准差检测更广泛的特征。
让我们看一些高斯滤波器拉普拉斯算子的示例。
示例 1:使用 fspecial() 函数
fspecial() 函数用于创建高斯滤波器,然后计算该高斯的拉普拉斯算子以创建 LoG 滤波器。然而,拉普拉斯滤波器期望高斯滤波器为 double 类型。
我们的代码是 -
<前>06前>让我们详细了解代码 -
<前>16前>这里它从当前目录读取图像“peppers.jpg”并将其存储在变量 img 中。
<前>23前>如果图像是彩色的(RGB 格式),则使用 rgb2gray 函数将其转换为灰度图像。灰度图像存储在变量img_gray中。如果图像已经是灰度图像,则按原样存储。
<前>37前>上面的代码创建了高斯滤波器。这里,我们定义了高斯滤波器的标准差 sigma,并根据标准差计算滤波器大小 hsize。然后,我们使用 fspecial 函数以“gaussian”作为滤波器类型创建高斯滤波器。
<前>45前>我们使用 fspecial 函数以“log”作为滤波器类型创建拉普拉斯高斯滤波器。该滤波器代表高斯滤波器的拉普拉斯算子,用于边缘检测。
<前>54前>这里使用 imfilter 函数对灰度图像 img_gray 进行高斯拉普拉斯滤波器。 'conv' 选项指定应使用卷积来应用过滤器,'replicate' 选项指定在过滤过程中应如何处理图像边界。
<前>66前>最后,我们使用 subplot、imshow 和 title 函数并排显示原始灰度图像和过滤后的图像。过滤后的图像在显示前会转换为uint8格式。
当代码执行时,我们得到的输出如下 -
示例 2:使用拉普拉斯和 LoG 滤波器进行图像过滤
此示例展示了两种不同的滤波器(拉普拉斯滤波器和高斯拉普拉斯 (LoG) 滤波器)对输入图像“peppers.jpg”的应用
我们的代码是 -
<前>78前>在上面的例子中-
<前>85前>此代码读取图像“peppers.jpg”并使用 imshow 函数显示它。 title 函数为图像添加标题。
<前>95前>此处,拉普拉斯滤波器是使用 fspecial 函数以“laplacian”作为滤波器类型创建的。然后使用 imfilter 函数将此过滤器应用于输入图像 x,从而得到过滤后的图像filtered_image。
<前>102前>此代码显示从拉普拉斯滤波器获得的滤波图像。 title 函数为图像添加标题。
<前>110前>与拉普拉斯滤波器类似,LoG 滤波器是使用 fspecial 函数以“log”作为滤波器类型创建的。然后使用 imfilter 函数将此过滤器应用于输入图像 x,从而得到过滤后的图像filtered_image。
<前>125前>此代码显示从 LoG 滤波器获得的滤波图像。 title 函数为图像添加标题。
当代码执行时,我们得到的输出是 -
MATLAB