数字图像处理之matlab实验(三):空间滤波器

这篇具有很好参考价值的文章主要介绍了数字图像处理之matlab实验(三):空间滤波器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、空间滤波原理

空间滤波,就是在原图像上,用一个固定尺寸的模板去做卷积运算,得到的新图像就是滤波结果。滤波,就是过滤某种信号的意思。过滤哪种信号取决于模板设计,如果是锐化模板,处理后就保留高频信号,如果是平滑模板,处理后就保留低频信号。

(1)模板运算

图像处理中模板能够看作是n*n(n通常是奇数)的窗体。模板连续地运动于整个图像中,对模板窗体范围内的像素做相应处理。

模板运算主要分为:

①模板卷积。模板卷积是把模板内像素的灰度值和模板中相应的灰度值相乘,求平均值赋给当前模板窗体的中心像素。作为它的灰度值;

②模板排序。模板排序是把模版内像素的灰度值排序,取某个顺序统计量作为模板中心像素灰度值。

Matlab中做模版卷积十分高效,取出模版内子矩阵和模版权重点乘求平均就可以,已图示为例,3X3的模板在图像上滑动,原图像f(x,y) 经过模板处理后变成了g(x,y)。

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

(2)边界处理

处理边界有非常多种做法:

①重复图像边缘上的行和列。

②卷绕输入图像(假设第一列紧接着最后一列)。

③在输入图像外部填充常数(例如零)。

④去掉不能计算的行列。仅对可计算的像素计算卷积。

(3)空间域滤波

把模板运算运用于图像的空间域增强的技术称为空间域滤波。依据滤波频率空间域滤波分为平滑滤波(减弱和去除高频分量)和锐化滤波(减弱和去除低频分量),依据滤波计算特点又分为线性滤波和非线性滤波。

因此空间域滤波可分为:

分类     线性       非线性

平滑   线性平滑   非线性平滑

锐化   线性锐化   非线性锐化

2、平滑滤波器

(1)添加噪声

噪声主要分类为两类,高斯噪声和椒盐噪声。

高斯噪声在每个像素上都会出现,赋值服从高斯分布。

椒盐噪声出现位置随机,所以可以控制椒盐噪声的密度,椒盐噪声的幅度确定,椒噪声偏暗,盐噪声偏亮。

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image = mat2gray( imread('original_pattern.jpg') ,[0 255]);
noiseIsp=imnoise(Image,'salt & pepper',0.1);  %添加椒盐噪声,密度为0.1  
imshow(noiseIsp,[0 1]); title('椒盐噪声图像');
noiseIg=imnoise(Image,'gaussian'); %添加高斯噪声,默认均值为0,方差为0.01
figure;imshow(noiseIg,[0 1]); title('高斯噪声图像');  

(2)平滑滤波器

 平滑滤波器可以去除图像的噪声,使图像变得模糊。包括:中值滤波、均值滤波、高斯滤波。

高斯滤波、均值滤波去除高斯噪声。

(3)均值滤波

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image=imread('Letters-a.jpg');
noiseI=imnoise(Image,'gaussian');                %添加高斯噪声
subplot(221),imshow(Image),title('原图');
subplot(222),imshow(noiseI),title('高斯噪声图像');
result1=filter2(fspecial('average',3),noiseI);                %3×3均值滤波
result2=filter2(fspecial('average',7),noiseI);                % 7×7均值滤波
subplot(223),imshow(uint8(result1)),title('3×3均值滤波');
subplot(224),imshow(uint8(result2)),title('7×7均值滤波');

(4)中值滤波

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理 

Image=rgb2gray(imread('lotus.bmp'));
noiseI=imnoise(Image,'salt & pepper',0.1);
result=medfilt2(noiseI);                                 %3×3中值滤波
subplot(121),imshow(noiseI),title('椒盐噪声图像');
subplot(122),imshow(uint8(result)),title('3×3中值滤波');

(5)自编程实现高斯滤波

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image=imread('Letters-a.jpg');
sigma1=0.6; sigma2=10; r=3;  % 高斯模板的参数
NoiseI= imnoise(Image,'gaussian'); %加噪
gausFilter1=fspecial('gaussian',[2*r+1 2*r+1],sigma1);  
gausFilter2=fspecial('gaussian',[2*r+1 2*r+1],sigma2);  
result1=imfilter(NoiseI,gausFilter1,'conv');
result2=imfilter(NoiseI,gausFilter2,'conv');
subplot(231);imshow(Image);title('原图');
subplot(232);imshow(NoiseI);title('高斯噪声图像');
subplot(233);imshow(result1);title('sigma1 =0.6高斯滤波');
subplot(234);imshow(result2);title('sigma2 =10高斯滤波');
%imwrite(uint8(NoiseI),'gr.bmp');
%imwrite(uint8(result1),'gr1.bmp');
%imwrite(uint8(result2),'gr2.bmp');
%编写高斯滤波函数实现
[height,width]=size(NoiseI);                                       
for x=-r:r
    for y=-r:r
        H(x+r+1,y+r+1)=1/(2*pi*sigma1^2).*exp((-x.^2-y.^2)/(2*sigma1^2));
    end
end 
H=H/sum(H(:));  %归一化高斯模板H  
result3=zeros(height,width);            %滤波后图像  
midimg=zeros(height+2*r,width+2*r);    %中间图像  
midimg(r+1:height+r,r+1:width+r)=NoiseI;  
for ai=r+1:height+r  
    for aj=r+1:width+r  
        temp_row=ai-r; 
        temp_col=aj-r;  
        temp=0;  
        for bi=1:2*r+1 
            for bj=1:2*r+1 
                temp= temp+(midimg(temp_row+bi-1,temp_col+bj-1)*H(bi,bj));  
            end  
        end  
       result3(temp_row,temp_col)=temp;  
    end  
end  
subplot(235);imshow(uint8(result3));title('myself高斯滤波'); 

3、锐化滤波器

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

 (1)梯度算子

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image=im2double(rgb2gray(imread('lotus.jpg')));
subplot(131),imshow(Image),title('原图像');
[h,w]=size(Image);
edgeImage=zeros(h,w);
for x=1:w-1
    for y=1:h-1
        edgeImage(y,x)=abs(Image(y,x+1)-Image(y,x))+abs(Image(y+1,x)-Image(y,x));
    end
end
subplot(132),imshow(edgeImage),title('梯度图像');
sharpImage=Image+edgeImage;
subplot(133),imshow(sharpImage),title('锐化图像');

(2)Robert算子 

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image=im2double(rgb2gray(imread('lotus.jpg')));
subplot(221),imshow(Image),title('原图像');
BW= edge(Image,'roberts');
subplot(222),imshow(BW),title('边缘检测');
H1=[1 0; 0 -1];
H2=[0 1;-1 0];
R1=imfilter(Image,H1);
R2=imfilter(Image,H2);
edgeImage=abs(R1)+abs(R2);
subplot(223),imshow(edgeImage),title('Robert梯度图像');
sharpImage=Image+edgeImage;
subplot(224),imshow(sharpImage),title('Robert锐化图像');

(3)Sobel算子 

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理

Image=im2double(rgb2gray(imread('lotus.jpg')));
subplot(221),imshow(Image),title('原图像');
BW= edge(Image,'sobel');
subplot(222),imshow(BW),title('边缘检测');
H1=[-1 -2 -1;0 0 0;1 2 1];
H2=[-1 0 1;-2 0 2;-1 0 1];
R1=imfilter(Image,H1);
R2=imfilter(Image,H2);
edgeImage=abs(R1)+abs(R2);
subplot(223),imshow(edgeImage),title('Sobel梯度图像');
sharpImage=Image+edgeImage;
subplot(224),imshow(sharpImage),title('Sobel锐化图像');

(4)多个模板边缘检测 

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理 

clear,clc,close all;
Image=im2double(rgb2gray(imread('lotus.jpg')));
H1=[-1 -1 -1;0 0 0;1 1 1];
H2=[0 -1 -1;1 0 -1; 1 1 0];
H3=[1 0 -1;1 0 -1;1 0 -1];
H4=[1 1 0;1 0 -1;0 -1 -1];
H5=[1 1 1;0 0 0;-1 -1 -1];
H6=[0 1 1;-1 0 1;-1 -1 0];
H7=[-1 0 1;-1 0 1;-1 0 1];
H8=[-1 -1 0;-1 0 1;0 1 1];
R1=imfilter(Image,H1);
R2=imfilter(Image,H2);
R3=imfilter(Image,H3);
R4=imfilter(Image,H4);
R5=imfilter(Image,H5);
R6=imfilter(Image,H6);
R7=imfilter(Image,H7);
R8=imfilter(Image,H8);
edgeImage1=abs(R1)+abs(R7);
sharpImage1=edgeImage1+Image;
f1=max(max(R1,R2),max(R3,R4));
f2=max(max(R5,R6),max(R7,R8));
edgeImage2=max(f1,f2);
sharpImage2=edgeImage2+Image;
subplot(221),imshow(edgeImage1),title('两个模板边缘检测');
subplot(222),imshow(edgeImage2),title('八个模板边缘检测');
subplot(223),imshow(sharpImage1),title('两个模板边缘锐化');
subplot(224),imshow(sharpImage2),title('八个模板边缘锐化');

(5)Laplacian算子

模板运算,数字图像处理之matlab,1024程序员节,人工智能,matlab,图像处理文章来源地址https://www.toymoban.com/news/detail-861155.html

Image=im2double(rgb2gray(imread('lotus.jpg')));
subplot(131),imshow(Image),title('原图像');
H=fspecial('laplacian',0);
R=imfilter(Image,H);
edgeImage=abs(R);
subplot(132),imshow(edgeImage),title('Laplacian梯度图像');
H1=[0 -1 0;-1 5 -1;0 -1 0];
sharpImage=imfilter(Image,H1);
subplot(133),imshow(sharpImage),title('Laplacian锐化图像');

到了这里,关于数字图像处理之matlab实验(三):空间滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数字图像处理】实验(2)——图像增强(MATLAB实现)

    (1)进一步掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数。 (2)掌握各种图像增强方法。 1.打开一幅彩色图像Image1,使用Matlab图像处理函数,对其进行下列变换: (1)将Image1灰度化为gray,统计并显示其灰度直方图; (2)对gray进行分段线性变换; (3)对gray进行

    2023年04月23日
    浏览(57)
  • 数字图像处理之matlab实验(五):形态学图像处理

    常见的形态学处理包括腐蚀、膨胀、开运算、闭运算。不同的操作有不同的作用,同样的操作在不同类型的图片上也有不同效果,具体效果如下表格所示。要求熟练掌握对二值图像的形态学处理。 不同操作对不同类型图像处理效果 一、对二值图像进行处理 1、结构元素 在开

    2024年02月04日
    浏览(64)
  • 【数字图像处理】实验(3)——图像综合应用:皮肤美化(MATLAB实现)

    (1)了解和掌握图像处理工具 Matlab ,熟悉基于 Matlab 的图像处理函数,并为下一步编程进行图像处理打下基础。 (2)理解色彩的概念,掌握图像代数运算,几何变换方法。 1.灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。 2.直方图均衡化通过点运

    2024年02月05日
    浏览(52)
  • 数字图像处理---低高通滤波实验(MATLAB实现)

    1. 了解图像傅里叶变换的意义和手段; 2. 熟悉理想低通滤波器、巴特沃斯低通滤波器、高斯低通滤波器的基本原理和性质; 3. 熟悉理想高通滤波器、巴特沃斯高通滤波器、高斯高通滤波器的基本原理和性质; 4. 掌握MATLAB编程实现数字图像的低高通滤波器的变换,并分析各参

    2024年02月05日
    浏览(40)
  • MATLAB【数字图像处理】 实验一:图像处理基本操作(平移、放大、缩小、旋转、插值)

    1、熟悉并掌握MATLAB工具的使用;  2、实现图像的读取、显示、存储、平移、镜像、放大、缩小及旋转操作; 3、掌握常用的插值方法,并了解其优缺点。 Matlab 2020B 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分别显示RGB图像和灰度图像,注上文字标

    2024年02月06日
    浏览(49)
  • (数字图像处理MATLAB+Python)第六章图像平滑-第一节:图像平滑概述和空间域平滑滤波

    图像平滑(Image Smoothing) :是一种数字图像处理技术,用于减少图像中的 噪声 和 不规则性 ,使图像更加平滑和连续。在图像中,噪声通常表现为不规则的、突出的像素值,这可能会导致图像细节丢失,使其难以进行分析和处理。图像平滑技术可以通过对像素值进行滤波来

    2023年04月24日
    浏览(57)
  • 数字图像处理 matlab图像的几何运算 实验三 旋转 缩放 裁剪 镜像变换 平移

    原图: 读取原图(这里我的图片名字是atm.png): 我们先说原理,图像旋转的本质是向量的旋转。 矩阵乘法的实质是进行线性变换,因此对一个向量进行旋转操作也可以通过矩阵和向量相乘的方式进行。 因为图像都是通过二维矩阵存放的(单通道),所以对图像进行旋转时

    2024年02月07日
    浏览(54)
  • 【数字图像处理】四种常用的滤波器

    空域滤波是在待处理图像f(x,y)上逐点移动模板,在每一点(x,y)的滤波响应通过事先定义的关系来计算。该响应就是空间滤波的输出。 模糊处理,来去除图像中的一些不重要的细节; 消除图像中的高频分量,同时不影响低频分量;高频分量对应途中的边缘等灰度值具有较大变化

    2024年02月07日
    浏览(45)
  • Matlab图像处理之Lee滤波器

       LEE滤波器是一种常用于合成孔径雷达(SAR)图像去噪的滤波器。它能增强图像的局部对比度。今天我们将通过MATLAB来实现这种滤波器。   LEE滤波器是一种基于窗函数的滤波器,其原理是将窗口内的像素进行加权平均,以消除图像中的噪声。这种滤波器通常用于SAR图像

    2024年02月09日
    浏览(43)
  • Matlab图像处理- 高斯低通滤波器

      高斯低通滤波器 高斯低通滤波器是一种 更平滑的一种滤波器 ,高斯低通滤波器完全没有振铃现象,且边缘平滑。 示例代码 利用输入图像,构建一个截止频率为30的高斯低通滤波器的透视图如下图所示。 效果图片

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包