实验结果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');
下面是结果

浙公网安备 33010602011771号