%这个文件实现彩色图像的边缘提取,原创clear all;A=imread('girl','JPEG');%A=imread('96042227hui.bmp');%要是真彩色subplot(1,2,1);subimage(A);A=im2double(A);%将A转换成double型R=A(:,:,1);G=A(:,:,2);B=A(:,:,3);%代表了红绿蓝三个分量I=(R+G+B)/3;%h=[0,-1,0;-1,4,-1;0,-1,0];h1=[-1,-1,-1;0,0,0;1,1,1];h2=[1,0,-1;1,0,-1;1,0,-1];C= conv2(double(h1),I);D=conv2(double(h2),I);[row,col]=size(D);E=zeros(row-2,col-2);for i=1:row-2 for j=1:col-2 if C(i,j)>D(i,j) E(i,j)=C(i,j); else E(i,j)=D(i,j); end endend for i=1:row-2 for j=1:col-2 if E(i,j)>0.15 E(i,j)=1; else E(i,j)=0; end endend for i=1:row-2 for j=1:col-2 if E(i,j)==1 A(i,j,1)=1; A(i,j,2)=1; A(i,j,3)=1; end endend subplot(1,2,2);subimage(A); %A=im2uint8(I);%将A转换成uint8型 %subplot(1,2,2);%subimage(A); 方法二(边缘是出来了,但图像的颜色有点恐怖)clear all;A=imread('girl','JPEG');%A=imread('96042227hui.bmp');%要是真彩色subplot(1,2,1);subimage(A);A=im2double(A);%将A转换成double型R=A(:,:,1);G=A(:,:,2);B=A(:,:,3);%代表了红绿蓝三个分量 %h=[0,-1,0;-1,4,-1;0,-1,0];h1=[-1,-1,-1;0,0,0;1,1,1];h2=[1,0,-1;1,0,-1;1,0,-1];R1= conv2(double(h1),R);R2=conv2(double(h2),R);G1= conv2(double(h1),G);G2=conv2(double(h2),G);B1= conv2(double(h1),B);B2=conv2(double(h2),B); [row,col]=size(R); for i=1:row for j=1:col if R1(i,j)>R2(i,j) R(i,j)=R1(i,j); else R(i,j)=R2(i,j); end endendfor i=1:row for j=1:col if G1(i,j)>G2(i,j) G(i,j)=G1(i,j); else G(i,j)=G2(i,j); end endendfor i=1:row for j=1:col if B1(i,j)>B2(i,j) B(i,j)=B1(i,j); else B(i,j)=B2(i,j); end endendA(:,:,1)=R;A(:,:,2)=G;A(:,:,3)=B; subplot(1,2,2);subimage(A); %A=im2uint8(I);%将A转换成uint8型 %subplot(1,2,2);%subimage(A);