糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 用matlab编程实现对图像的均值滤波 中值滤波和拉普拉斯算子锐化

用matlab编程实现对图像的均值滤波 中值滤波和拉普拉斯算子锐化

时间:2022-07-12 13:24:40

相关推荐

用matlab编程实现对图像的均值滤波 中值滤波和拉普拉斯算子锐化

1 均值滤波

均值滤波:用包含在滤波掩模邻域内的像素的平均灰度值去代替每个像素点的值。用途:用于模糊处理和减少噪声。

盒滤波器:

加权平均滤波器

% 均值滤波clc;close all;clear all;I = rgb2gray(imread('fig.png'));F = imnoise(I,'gaussian',0, 0.02); % 加入高斯噪声% F = imnoise(I,'salt & pepper',0.02); %加入椒盐躁声v = 1/9*[1 1 1;1 1 1;1 1 1]; % 盒滤波器v2 = 1/16*[1 2 1;2 4 2;1 2 1]; % 加权平均滤波器[m, n] = size(I);G = zeros(m,n);H = zeros(m,n);for x=1:mfor y = 1:nif (x==1||y==1||x==m||y==n)G(x,y)=F(x,y);H(x,y)=F(x,y);else % 对图像进行卷积处理G(x,y)=v(1,1) * F(x-1, y-1) + v(1,2) * F(x-1, y)+v(1,3) *F(x-1, y+1)...+v(2,1) * F(x, y-1)+v(2,2)* F(x, y)+v(2,3) * F(x, y+1)...+v(3,1) * F(x+1, y+1) + v(3,2) * F(x+1, y)+v(3,3)* F(x+1, y+1);H(x,y)=v2(1,1) * F(x-1, y-1) + v2(1,2) * F(x-1, y)+v2(1,3) * F(x-1, y+1)...+v2(2,1) * F(x, y-1)+v2(2,2)* F(x, y)+v2(2,3) * F(x, y+1)...+v2(3,1) * F(x+1, y+1) + v2(3,2) * F(x+1, y)+v2(3,3) * F(x+1, y+1);endendendfiguresubplot(221)imshow(I);title('原始图像');subplot(222)imshow(uint8(F));% title('加入椒盐噪声后的图像');title('加入高斯噪声后的图像');subplot(223)imshow(uint8(G));title('均值滤波后的图像');subplot(224)imshow(uint8(H));title('加权均值滤波后的图像');

2 中值滤波

中值滤波:先将掩模内欲求的像素及其领域的像素值排序(升序或降序),确定出中值,并将中值赋予该像素点。强迫突出的亮点(暗点)更象它周围的值,以消除孤立的亮点(暗点)。二维中值滤波的窗口形状和尺寸对滤波效果影响较大,不同的图像内容和不同的应用要求,往往采用不同的窗口形状和尺寸。常用的二维中值滤波窗口有线状、方形、圆形、十字形以及圆环形等。窗口尺寸一般先用3×3,再取5×5逐渐增大,直到滤波效果满意为止。就一般经验来讲,对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜。对于包含有尖顶物体的图像,用十字形窗口,而窗口大小则以不超过图像中最小有效物体的尺寸为宜。如果图像中点、线、尖角细节较多,则不宜采用中值滤波。主要功能:使拥有不同灰度的点看起来更接近于它的邻近值。用途:去除椒盐噪声

% 中值滤波clc;close all;clear all;I = rgb2gray(imread('fig.png'));% F = imnoise(I,'gaussian',0, 0.002);F = imnoise(I,'salt & pepper',0.06);[m, n] = size(I);G = zeros(m,n);for x=1:mfor y = 1:nif (x==1||y==1||x==m||y==n)G(x,y)=F(x,y);else % 选出第5大的数H = sort([F(x-1,y-1), F(x-1,y),F(x-1,y+1),F(x,y),... F(x,y+1),F(x+1,y-1),F(x+1,y),F(x+1,y+1)]);G(x,y)=median(H);endendendfiguresubplot(221)imshow(I);title('原始图像');subplot(222)imshow(uint8(F));title('加入椒盐噪声后的图像');subplot(223)imshow(uint8(G));title('中值滤波后的图像');

3 拉普拉斯算子锐化

拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产生一幅把浅灰色边线、突变点叠加到暗背景中的图像。对二元图像函数f(x,y)的拉普拉斯变换定义为:

Δ 2 f = [ f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y − 1 ) + f ( x , y + 1 ) ] − 4 f ( x , y ) \Delta^2 f = [f(x+1,y) + f(x-1,y)+f(x,y-1)+f(x,y+1)]-4f(x,y) Δ2f=[f(x+1,y)+f(x−1,y)+f(x,y−1)+f(x,y+1)]−4f(x,y)

对应的掩模为:

微分掩模的所有系数之和为0以保证灰度恒定区域的响应为0

将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。因此拉普拉斯算子用于图像增强的基本方法如下:

clc;close all;clear all;F = rgb2gray(imread('fig.png')); [m,n]=size(F); G=zeros(m,n); H=zeros(m,n); w=[0,-1,0;-1,4,-1;0,-1,0]; for x=1:mfor y=1:n if (x==1||y==1||x==m||y==n) G(x,y)=F(x,y); elseG(x,y)=w(1,1)*F(x-1,y-1)+w(1,2)*F(x-1,y)+w(1,3)*F(x-1,y+1)... +w(2,1)*F(x,y-1)+w(2,2)*F(x,y)+w(2,3)*F(x,y+1)... +w(3,1)*F(x+1,y+1)+w(3,2)*F(x+1,y)+w(3,3)*F(x+1,y+1); endendendfigure subplot(121) imshow(F) title('原始图像'); subplot(122) imshow(uint8(G)); title('拉普拉斯算子处理后的图像');

如果觉得《用matlab编程实现对图像的均值滤波 中值滤波和拉普拉斯算子锐化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。