玩的代码

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

实验结果LOG

垂直方向做平滑,边缘增强,水平方向的计算相干体。不需要边缘增强。

 

  1 I=imread('E:\geo\testbmps\0o.bmp');
  2 % I=rgb2gray(I);
  3 imwrite(I,'E:\geo\testbmps\testxg\I.bmp');
  4 % imshow(I)
  5 % I=rgb2gray(I);
  6 I=double(I);
  7 %laplace 增强
  8 % h=[0 1 0,1 -4 1,0 1 0];
  9 % Ilaplace=conv2(I,h,'same');
 10 % I=I-Ilaplace;
 11 % imshow(I);
 12 [Ix,Iy]=gradient(I);
 13 
 14 direction=[(Iy+1)./(Ix+1)];
 15 dirction=direction;
 16 I1=I;
 17 [m,n]=size(dirction);
 18 d=10;
 19 iter=1;
 20 
 21 for k=1:1:iter
 22      I=I1;
 23 for j=d+1:1:n-d
 24 for i=d+1:1:m-d
 25 % if(dirction(i,j)>1&&Ix(i,j)>0) dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i+1,j+1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 26 % if(dirction(i,j)>1&&Iy(i,j)<0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i+1,j-1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 27 % if(dirction(i,j)<1&&dirction(i,j)>0&&Ix(i,j)>0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j+1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 28 % if(dirction(i,j)<1&&dirction(i,j)>0&&Ix(i,j)<0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j-1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 29 % if(dirction(i,j)<0&&dirction(i,j)>-1&&Ix(i,j)<0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j+1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 30 % if(dirction(i,j)<0&&dirction(i,j)>-1&&Ix(i,j)>0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j-1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 31 % if(dirction(i,j)<-1&&Iy(i,j)<0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j-1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 32 % if(dirction(i,j)<-1&&Iy(i,j)>0)dirction(i,j)=I(i,j)* (Ix(i,j).^2+Iy(i,j).^2)/(1+(Ix(i,j).^2+Iy(i,j).^2))+I(i,j+1)*1/(1+(Ix(i,j).^2+Iy(i,j).^2));
 33 % G=sqrt(Ix(i,j).^2+Iy(i,j).^2);
 34 G=log(Ix(i,j).^2+Iy(i,j).^2);
 35  %G=exp((Ix(i,j).^2+Iy(i,j).^2));
 36 %G=1/G;
 37 % G=1;
 38  %G=1/sqrt(Ix(i,j).^2+Iy(i,j).^2);
 39 delta=200;
 40 condition=((abs(Ix(i,j))<delta)&&(abs(Iy(i,j))<delta));
 41 if(dirction(i,j)>=0.42447&&dirction(i,j)<=2.4751&&Ix(i,j)>=0&&Iy(i,j)>=0&&condition)
 42     I1(i,j)=I(i,j)* G/(1+G)+I(i+1*d,j+1*d)*    1/(1+G);
 43 elseif(dirction(i,j)>=0.42447&&dirction(i,j)<=2.4751&&Ix(i,j)<0&&Iy(i,j)<=0&&condition)
 44     I1(i,j)=I(i,j)* G/(1+G)+I(i-d,j-d)*1/(1+G);
 45 elseif(((dirction(i,j)<=-2.3559)||(dirction(i,j)>=2.4751))&&(Iy(i,j)>=0)&&condition) 
 46     I1(i,j)=I(i,j)* G/(1+G)+I(i,j+d)*1/(1+G);
 47 elseif((dirction(i,j)<=-2.3559||dirction(i,j)>=2.4751)&&(Iy(i,j)<=0)&&condition)
 48     I1(i,j)=I(i,j)* G/(1+G)+I(i,j-d)*1/(1+G);
 49 elseif((dirction(i,j)>=-2.3559&&dirction(i,j)<=-0.21256)&&Ix(i,j)<=0&&Iy(i,j)>=0&&condition)
 50     I1(i,j)=I(i,j)* G/(1+G)+I(i-d,j+d)*1/(1+G);
 51 elseif((dirction(i,j)>=-2.3559&&dirction(i,j)<=-0.21256)&&Ix(i,j)<=0&&Iy(i,j)>=0&&condition)
 52     I1(i,j)=I(i,j)* G/(1+G)+I(i+d,j-d)*1/(1+G);
 53 elseif((dirction(i,j)>-0.21256&&dirction(i,j)<=0.42447)&&Ix(i,j)<0&&condition) 
 54     I1(i,j)=I(i,j)* G/(1+G)+I(i-d,j)*1/(1+G);
 55 elseif((dirction(i,j)>=-0.21256&&dirction(i,j)<=0.42447)&&Ix(i,j)>=0&&condition)
 56     I1(i,j)=I(i,j)* G/(1+G)+I(i+d,j)*1/(1+G);
 57 else I1(i,j)=I(i,j);
 58 % if(dirction(i,j)>0.42447&&dirction(i,j)<2.4751&&Ix(i,j)>0&&Iy(i,j)>0)
 59 % %     I1(i,j)=I(i,j)* (Ix(i,j)+Iy(i,j))/(1+(Ix(i,j)+Iy(i,j)))+I(i+1,j+1)*1/(1+(Ix(i,j)+Iy(i,j)));
 60 %  I1(i,j)=I(i,j)* 1/4+I(i+1,j+1)*3/4;   
 61 % elseif(dirction(i,j)>0.42447&&dirction(i,j)<2.4751&&Ix(i,j)<0&&Iy(i,j)<0)
 62 %  I1(i,j)=I(i,j)* 1/4+I(i-1,j-1)*3/4;   
 63 % elseif(((dirction(i,j)<-2.3559)||(dirction(i,j)>2.4751))&&(Iy(i,j)>0)) 
 64 %     I1(i,j)=I(i,j)* 1/4+I(i,j+1)*3/4;   
 65 % elseif((dirction(i,j)<-2.3559||dirction(i,j)>2.4751)&&(Iy(i,j)<0))
 66 %    I1(i,j)=I(i,j)* 1/4+I(i+1,j-1)*3/4;
 67 % elseif((dirction(i,j)>-2.3559&&dirction(i,j)<-0.21256)&&Ix(i,j)<0&&Iy(i,j)>0)
 68 %     I1(i,j)=I(i,j)* 1/4+I(i-1,j+1)*3/4;
 69 % elseif((dirction(i,j)>-2.3559&&dirction(i,j)<-0.21256)&&Ix(i,j)<0&&Iy(i,j)>0)
 70 %     I1(i,j)=I(i,j)* 1/4+I(i+1,j-1)*3/4;
 71 % elseif((dirction(i,j)>-0.21256&&dirction(i,j)<0.42447)&&Ix(i,j)<0) 
 72 %     I1(i,j)=I(i,j)* 1/4+I(i-1,j)*3/4;
 73 % elseif((dirction(i,j)>-0.21256&&dirction(i,j)<0.42447)&&Ix(i,j)>0)
 74 %      I1(i,j)=I(i,j)* 1/4+I(i+1,j)*3/4;
 75 % else I1(i,j)=I(i,j);
 76 end
 77 end
 78 end
 79 % end
 80 % end
 81 % end
 82 % end
 83 % 
 84 % end
 85 % end
 86 % end
 87 end
 88 % I=imread('E:\geo\testbmps\1.bmp');
 89 % I=uint8(I);
 90 % I=rgb2gray(I);
 91 I1=uint8(I1);
 92 % I1=rgb2gray(I1);
 93 % if(I1==I)
 94 %     disp('aaa');
 95 % end
 96 % figure,imshow(I);
 97 % dirction=im2uint8(dirction);
 98 % Iaaa=I./2+dirction./2;
 99 % figure,imshow(Iaaa);
100 % imshow(I1);
101 
102 % figure,imshow(I1-I);
103 % imwrite(histeq(I1),'E:\geo\testbmps\histeqtestline2925.bmp');
104 %%# Read an image
105 %# Create the gaussian filter with hsize = [5 5] and sigma = 2
106 G = fspecial('gaussian',[5 5],1);
107 %# Filter it
108 Ig = imfilter(I1,G,'same');
109 % I1=Ig;
110 Im=medfilt2(I1,[5 5]);
111 % Histeqmed=histeq(Im);
112 % Histeqguass=histeq(Ig);
113 % HisteqI1=histeq(I1);
114 %# Display
115 % imshow(Ig)
116 imwrite(I1,'E:\geo\testbmps\diedai1\t0oitr1bgGe.bmp');
117 imwrite(Ig,'E:\geo\testbmps\diedai1\t0oiter1eG1guasse.bmp');
118 imwrite(Im,'E:\geo\testbmps\diedai1\t0oiter1G1emedfilte.bmp');
119 % imwrite(Histeqmed,'E:\geo\testbmps\t0oiter20Histeqmed.bmp');
120 % imwrite(Histeqguass,'E:\geo\testbmps\t0oiter20Histeqguass.bmp');
121 % imwrite(HisteqI1,'E:\geo\testbmps\t0oiter20HisteqI1.bmp');
View Code


下面是结果

 

posted on 2013-10-14 15:02  玩的代码  阅读(122)  评论(0)    收藏  举报