📄 compcontext.m
字号:
%% 用于计算图像改进的形状直方图,输入为图像,重心坐标,已经封装呈函数,可以直接调用
function ContextHist=CompContext(pic,x,y)
pic=double(pic);
[M,N]=size(pic);
DisMax=ceil((ceil(sqrt(M*M+N*N))+1)/2)+1; %% 计算图像对角线的长度的一半,统计重心到其它字符像素的距离不会超过对角线的长度的一半
Context=zeros(DisMax,360); %% 定义存储统计向量的矩阵
i=x;
j=y;
for p=1:M
for q=1:N %% 计算其他点到该点的距离和方向
if pic(p,q)~=0 %% 如果图像灰度不为0,则为字符像素,否则不统计
Dis=round(sqrt((i-p)*(i-p)+(j-q)*(j-q))); %% 将计算得到的向量距离取整
if Dis<DisMax %% 为了避免个别点与重心的距离超过所定义的最大距离,这里加以判断
if p<i&&q>j %% 根据字符像素与重心的位置计算角度,逆时针为正
Angle=round(180*atan(abs(p-i)/abs(q-j))/pi);
end
if p<i&&q<j
Angle=round(180-180*atan(abs(p-i)/abs(q-j))/pi);
end
if p>i&&q<j
Angle=round(180+180*atan(abs(p-i)/abs(q-j))/pi);
end
if p>i&&q>j
Angle=round(360-180*atan(abs(p-i)/abs(q-j))/pi);
end
if p==i&&q~=j
Angle=0;
end
if q==j&&p~=i
Angle=90;
end
if Dis==0||Angle==360
Angle=0;
end
Context(Dis+1,Angle+1)=Context(Dis+1,Angle+1)+1;
end
end
end
end
ContextHist=sum(Context,2); %% 计算统计结果向距离轴的投影
%%% 幅度归一化
ContextHist=ContextHist/max(ContextHist);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -