图像锐化 (一)

图像锐化的目的是加强图像中景物的边缘和轮廓,突出图像中的细节或增强被模糊了的细节。

方法一:一阶微分算子

1. 梯度算子

clc
clear
a=imread('test.jpg');
a=rgb2gray(a);
a=im2double(a);
subplot(131),imshow(a),title('orgin');
[h,w]=size(a);

%----- 梯度算子 -----%
edgeImage=zeros(h,w);
for x=1:w-1
    for y=1:h-1
        edgeImage(y,x)=abs(a(y,x+1)-a(y,x))+abs(a(y+1,x)-a(y,x));
    end
end
subplot(132),imshow(edgeImage),title('edgeImage');
afterImage=edgeImage+a;
subplot(133),imshow(afterImage),title('afterImage');
梯度算子
Caption

2. Robert 算子

clc
clear
a=imread('test.jpg');
a=rgb2gray(a);
a=im2double(a);
figure,subplot(231),imshow(a),title('orgin');
[h,w]=size(a);

%----- Robert算子 -----%
RobertImage=zeros(h,w);
for x=1:w-1
    for y=1:h-1
        RobertImage(y,x)=abs(a(y+1,x+1)-a(y,x))+abs(a(y+1,x)-a(y,x+1));
    end
end
subplot(232),imshow(RobertImage),title('RobertImage1');
afterRobertImage=RobertImage+a;
subplot(233),imshow(afterRobertImage),title('afterRobertImage1');

H1=[1 0;0 -1];
H2=[0 1;-1 0];
edgeImage=abs(imfilter(a,H1))+abs(imfilter(a,H2));
subplot(234),imshow(edgeImage),title('RobertImage2');
after=edgeImage+a;
subplot(235),imshow(after),title('afterRobertImage2');

BW=edge(a,'roberts'); %edge:对a采用roberts算子进行边缘检测,返回二值图像BW 1表示边缘 0表示其他
subplot(236),imshow(BW),title('BW');

3. Sobels 算子

sobel 算子引入平均元素,对图像中的随机噪声有一定的平滑作用;相隔两行或者两列求差分,故边缘两侧的元素得到了增强,边缘显得粗而亮

可以通过旋转将模板扩展为8个

clc
clear
a=imread('test.jpg');
a=rgb2gray(a);
a=im2double(a);
figure,subplot(231),imshow(a),title('orgin');
[h,w]=size(a);

%----- sobel 算子 -----%
H1=[-1 -2 -1;0 0 0; 1 2 1];
H2=[-1 0 1;-2 0 2;-1 0 1];
H3=[0 -1 -2;1 0 -1;2 1 0];
img=zeros(h,w);
imgH=abs(imfilter(a,H1));
imgHW=abs(imfilter(a,H1))+abs(imfilter(a,H2));
imgHWS=abs(imfilter(a,H1))+abs(imfilter(a,H2))+abs(imfilter(a,H3));
afterimgH=imgH+a;
afterimgHW=imgHW+a;
afterimgHWS=imgHWS+a;
subplot(232),imshow(imgH),title('Sobel_H');
subplot(233),imshow(imgHW),title('Sobel_HW');
subplot(234),imshow(afterimgH),title('afterSobel_H');
subplot(235),imshow(afterimgHW),title('afterSobel_HW');
subplot(236),imshow(afterimgHWS),title('afterSobel_HWS');

4. Prewitt 算子

clc
clear
a=imread('test.jpg');
a=rgb2gray(a);
a=im2double(a);
figure,subplot(231),imshow(a),title('orgin');
[h,w]=size(a);

%----- Prewitt 算子 -----%
H1=[-1 -1 -1;0 0 0; 1 1 1];
H2=[-1 0 1;-1 0 1;-1 0 1];
H3=[0 -1 -1;1 0 -1;1 1 0];
img=zeros(h,w);
imgH=abs(imfilter(a,H1));
imgHW=abs(imfilter(a,H1))+abs(imfilter(a,H2));
imgHWS=abs(imfilter(a,H1))+abs(imfilter(a,H2))+abs(imfilter(a,H3));
afterimgH=imgH+a;
afterimgHW=imgHW+a;
afterimgHWS=imgHWS+a;
subplot(232),imshow(imgH),title('Prewitt_H');
subplot(233),imshow(imgHW),title('Prewitt_HW');
subplot(234),imshow(afterimgH),title('afterPrewitt_H');
subplot(235),imshow(afterimgHW),title('afterPrewitt_HW');
subplot(236),imshow(afterimgHWS),title('afterPrewitt_HWS');

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值