基于matlab图像锐化处理

1:priwitt锐化方法

>> x=imread('6.bmp');

>> [m,n]=size(x);
>> m

m =

   512

>> n

n =

        1536

>> figure,imshow(x);

image

>> x=double(x);
>> figure,imshow(x);

image

>> b=zeros(m,n);
>> c=zeros(m,n);
>> figure,imshow(c);

image

for i=1:m-2
    for j=1:n-2
        b(i+1,j+1)=-x(i,j)-x(i+1,j)-x(i+2,j+2)+x(i,j+2)+x(i+1,j+2)+x(i+2,j+2);
        c(i+1,j+1)=x(i,j)+x(i,j+1)+x(i,j+2)-x(i+2,j)-x(i+2,j+1)-x(i+2,j+2);
        b(i+1,j+1)=sqrt(b(i+1,j+1)^2+c(i+1,j+1)^2)+100;
        %这儿处理有两种方式,绝对值和统一加一个数,不同的处理会得到不同的效果
%if b(i+1,j+1)<0
   % b(i+1,j+1)=-b(i+1,j+1);
   %end
    end
end

figure;imshow(uint8(b))

image

 

>> clear
>>  x=imread('10.gif');

10
>> [m,n]=size(x);
>> m

m =

   354

>> n

n =

   500

>>

figure,imshow(x);这个结果说明:彩色图像的处理上显然是不同与黑白图像,

image

for i=1:m-2
               for j=1:n-2
         b(i+1,j+1)=-x(i,j)-x(i+1,j)-x(i+2,j+2)+x(i,j+2)+x(i+1,j+2)+x(i+2,j+2);    c(i+1,j+1)=x(i,j)+x(i,j+1)+x(i,j+2)-x(i+2,j)-x(i+2,j+1)-x(i+2,j+2);
              b(i+1,j+1)=sqrt(b(i+1,j+1)^2+c(i+1,j+1)^2)+1000;
end
end

figure ;imshow(uint8(b))

image

所以很奇怪了

完整代码:

x=imread('5.bmp');
[m,n]=size(x);
figure,imshow(x);
x=double(x);
b=zeros(m,n);
c=zeros(m,n);
for i=1:m-2
    for j=1:n-2
        b(i+1,j+1)=-x(i,j)-x(i+1,j)-x(i+2,j+2)+x(i,j+2)+x(i+1,j+2)+x(i+2,j+2);
        c(i+1,j+1)=x(i,j)+x(i,j+1)+x(i,j+2)-x(i+2,j)-x(i+2,j+1)-x(i+2,j+2);
        b(i+1,j+1)=sqrt(b(i+1,j+1)^2+c(i+1,j+1)^2)+100;
        %这儿处理有两种方式,绝对值和统一加一个数,不同的处理会得到不同的效果
%if b(i+1,j+1)<0
   % b(i+1,j+1)=-b(i+1,j+1);
   %end
    end
end
figure;imshow(uint8(b))

另一个实验情况如下:

image

一个二值静态无污染图像的锐化

image

posted @ 2009-05-13 20:26  fleetwgx  阅读(10595)  评论(0编辑  收藏  举报