本示例说明了如何使用imgaussfilt
来对图像应用不同的高斯平滑滤波器。高斯平滑滤波器通常用于降低噪声。
将图像读入工作区。
I = imread('cameraman.tif');
使用各向同性的高斯平滑核增加标准偏差来过滤图像。高斯滤波器通常是各向同性的,也就是说,它们在两个维度上具有相同的标准偏差。通过为sigma
指定标量值,可以通过各向同性的高斯滤波器对图像进行滤波。
Iblur1 = imgaussfilt(I,2);Iblur2 = imgaussfilt(I,4);Iblur3 = imgaussfilt(I,8);
显示原始图像和所有过滤的图像。
figureimshow(I)title('Original image')
figureimshow(Iblur1)title('Smoothed image, sigma = 2')
figureimshow(Iblur2)title('Smoothed image, sigma = 4')
figureimshow(Iblur3)title('Smoothed image, sigma = 8')
用各向异性高斯平滑核滤波图像。imgaussfilt
允许高斯核沿着行和列的尺寸具有不同的标准偏差。这些被称为轴对准各向异性高斯滤波器。使用各向异性过滤器时,要为sigma
指定2元素向量。
IblurX1 = imgaussfilt(I,[4 1]);IblurX2 = imgaussfilt(I,[8 1]);IblurY1 = imgaussfilt(I,[1 4]);IblurY2 = imgaussfilt(I,[1 8]);
显示滤波的图像。
figureimshow(IblurX1)title('Smoothed image, sigma_x = 4, sigma_y = 1')
figureimshow(IblurX2)title('Smoothed image, sigma_x = 8, sigma_y = 1')
figureimshow(IblurY1)title('Smoothed image, sigma_x = 1, sigma_y = 4')
figureimshow(IblurY2)title('Smoothed image, sigma_x = 1, sigma_y = 8')
抑制原始图像中的天空区域中可见的水平带。各向异性高斯滤镜可以抑制图像中的水平或垂直特征。提取图像的天空区域的一部分,并使用沿X轴(列增加的方向)具有较高标准偏差的高斯滤波器。
I_sky = imadjust(I(20:50,10:70));IblurX1_sky = imadjust(IblurX1(20:50,10:70));
显示原始天空图块以及滤波版本的图块。
figureimshow(I_sky), title('Sky in original image')
figureimshow(IblurX1_sky), title('Sky in filtered image')
注:本文根据MATLAB官网内容修改而成。
我推荐给你以下的免费视频教程,特点是没有PPT,不掺水,直接编程环境下的实操课程:
用100分钟了解MATLAB编程
《MATLAB编程》视频课程 - 商业数据分析_数据可视化_Tableau免费课程_Tableau培训_自学Tableau_上海_1data.prowww.1data.pro欢迎您进一步了解以下MATLAB系列文章:
吃小羊:MATLAB作图实例:00:索引zhuanlan.zhihu.com吃小羊:MATLAB金融工具箱:00:索引zhuanlan.zhihu.com吃小羊:MATLAB图像处理:00:索引zhuanlan.zhihu.com