匿名用户
1级
2015-05-18 回答
我们实验做得,不知对你有用吗?
分别利用Roberts、Prewitt和Sobel算子对lena.img进行边缘检测
clc;
fid=fopen(' F:\数字图像处理\实验二 在 502-111 (603-003) 上\img\lena.bmp','r');
f=fread(fid,[256,256],'uchar');
GR=f;
GP=f;
GS=f;
for x=2:255
for y=2:255
GRx(x,y)=f(x,y)-f(x+1,y+1);
GRy(x,y)=f(x,y+1)-f(x+1,y);
GR(x,y)=sqrt((GRx(x,y)).^2+(GRy(x,y)).^2);
GPx(x,y)=(f(x-1,y+1)+f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+f(x,y-1)+f(x+1,y-1))/3;
GPy(x,y)=(f(x-1,y-1)+f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+f(x+1,y)+f(x+1,y+1))/3;
GP(x,y)=sqrt((GPx(x,y)).^2+(GPy(x,y)).^2);
GSx(x,y)=(f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+2*f(x,y-1)+f(x+1,y-1))/3;
GSy(x,y)=(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1))/3;
GS(x,y)=sqrt((GSx(x,y)).^2+(GSy(x,y)).^2);
end
end
subplot(2,2,1);
imshow(f,[0,255]);title('原图像');
subplot(2,2,2);
imshow(GR,[0,255]);title('Roberts');
subplot(2,2,3);
imshow(GP,[0,255]);title('Prewitt');
subplot(2,2,4);
imshow(GS,[0,255]);title('Sobel');