数字图像处理上机实验三

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

医学图像处理实验三1、计算图像的梯度,梯度值和梯度角。

I=imread('C:\Users\Administrator\Desktop\cat.jpg'); B=rgb2gray(I);

C=double(B);

e=1e-6;%10^-6

[dx,dy]=gradient(C);%计算梯度

G=sqrt(dx.*dx+dy.*dy);%梯度幅值

figure,imshow(uint8(G)),title('梯度图像');

pha=atan(dy./(dx+e))

figure,imshow(pha,[])

图 1

图 2 梯度角图

2、计算图像边缘检测,用滤波器方式实现各种算子。

(1)Roberts算子

clear;

I=imread('C:\Users\admin\Desktop\mao.jpg');

B=rgb2gray(I);

[m,n]=size(B);

nB=B;

robertsnum=0;%经roberts算子计算得到的每一个像素的值robertsthreshold=0.6;%设定阈值

for j=1:m-1;%进行边界提取

for k=1:n-1

robertsnum=abs(B(j,k)-B(j+1,k+1))+abs(B(j+1,k)-B(j,k+1)); if(robertsnum>robertsthreshold)

nB(j,k)=255;

else

nB(j,k)=0;

end

end

end

subplot(1,2,1);imshow(B);title('原图');

subplot(1,2,2);imshow(nB,[]);title('Robert算子处理后的图像');

图 3

(2)Sobel算子

clear;

I=imread('C:\Users\admin\Desktop\mao.jpg');

B=rgb2gray(I);

[m,n]=size(B);

f=double(B);

u=double(B);

usobel=B;

for i=2:m-1%sobel边缘检测

for j=2:n-1;

gx=(u(i+1,j-1)+2*u(i+1,j)+f(i+1,j+1)-(u(i-1,j-1)+2*u(i-1,j)+f(i-1,j+1)));

gy=(u(i-1,j+1)+2*u(i,j+1)+f(i+1,j+1)-(u(i-1,j-1)+2*u(i,j-1)+f(i+1,j-1)));

usobel(i,j)=sqrt(gx^2+gy^2);

end

end

subplot(1,2,1);imshow(B);title('原图');

subplot(1,2,2);imshow(im2uint8(usobel));title('Sobel边缘检测后的图像');

图 4

(3)Prewitt算子

clear;

I=imread('C:\Users\admin\Desktop\mao.jpg');

B=rgb2gray(I);

[m,n]=size(B);

nB=B;

prewittnum=0;%经prewitt算子计算得到的每一个像素的值

prewittthreshold=0.6;%设定阈值

for j=2:m-1;%进行边界提取

for k=2:n-1

prewittnum=abs(B(j-1,k+1)-B(j+1,k+1))+B(j-1,k)-B(j+1,k)+B(j-1,k-1)-B(j+1,k-1)+abs(B(j-1,k +1)+B(j,k+1)+B(j+1,k+1)-B(j-1,k-1)-B(j,k-1)-B(j+1,k-1));

if(prewittnum>prewittthreshold)

nB(j,k)=255;

else

nB(j,k)=0;

end

end

end

subplot(1,2,1);imshow(B);title('原图');

subplot(1,2,2);imshow(nB,[]);title('Prewitt算子处理后的图像');

图 5

(4)Laplace边缘检测

function flapEdge=LaplaceEdge(pic,Moldtype,thresh)

[m,n]=size(pic);

flapEdge=zeros(m,n);

%四邻域拉普拉斯边缘检测算子

if 4==Moldtype

for i=2:m-1

for j=2:n-1

temp=-4*pic(i,j)+pic(i-1,j)+pic(i+1,j)+pic(i,j-1)+pic(i,j+1);

if temp>thresh

flapEdge(i,j)=255;

else

flapEdge(i,j)=0;

end

end

end

end

%八邻域拉普拉斯边缘检测算子

if 8==Moldtype

for i=2:m-1

for j=2:n-1

temp=-8*pic(i,j)+pic(i-1,j)+pic(i+1,j)+pic(i,j-1)+pic(i,j+1)+pic(i-1, j-1)+pic(i+1,j+1)+pic(i+1,j-1)+pic(i-1,j+1);

相关文档
最新文档