📄 no1.m
字号:
function NO1
clc
clear
x1=imread('E:\图\shu.jpg');
X=rgb2gray(x1);
%filename='rice.bmp'; % 读取原图像
%X=imread(filename);
[M,N]=size(X);
figure
imshow(X);
title('原图像')
%-----------------------------NO2 start-----------------------%
XA=255.*ones(M,N); %创建一个纯白图像
[X_gray,th]=leijianfangcha(X); %类间方差法分割图像
figure
imshow(X_gray)
title('分割图像')
X=double(X);
XA=double(XA);
th=th*0.19; %认为确定边缘检测阈值
for i=2:M-1;
for j=2:N-1;
temp=filter_H1(X,i,j);
if temp>th
XA(i,j)=0;
else
XA(i,j)=255;
end
end
end
XA=uint8(XA); %H1算子边缘检测结果
figure
imshow(XA);
title('边缘图像')
%-------------------------NO2 end-----------------------------%
%-------------------------NO3 start-----------------------------%
Ox=M;
Oy=1;
for i=M:-1:1;
for j=1:N;
if i==M && j==1;
lnr(i,j)=0;
else
lnr(i,j)=log( sqrt( (i-Ox)^2+(j-Oy)^2 ) );
end
if j==1 && i~=M;
sita(i,j)=pi/2;
elseif i==M && j==1;
sita(i,j)=0;
else
sita(i,j)=atan(abs((i-Ox)/(j-Oy)));
end
end
end
figure
imshow(lnr,sita,uint8(X));
%mesh(lnr,sita,double(X))
title('XAp图像')
%-------------------------NO3 end-------------------------------%
%-----------------------子函数----------------------------%
function result=filter_H1(X,i,j) %H1算子子函数
%H1=[1,2,1;0,0,0;-1,-2,-1;];
H1=[-1,2,-1;-1,2,-1;-1,2,-1;];
result=0;
for a=-1:1;
for b=-1:1;
result=result+X(i+a,j+b).*H1(a+2,b+2);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -