這個文件實現彩色圖像的邊緣提取,原創

%這個文件實現彩色圖像的邊緣提取,原創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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章