
正文
matlab界面UI设计资料
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
一个实现图像灰度处理并归类于某已知相似图片的程序
软件:matlab2017a
算法:HU检索图像算法、Zernike算法
资料:
①:
matlab遍历文件夹下所有图片和遍历所有子文件夹下图片 - 专于技术,相信自我 - 博客园
https://www.cnblogs.com/tansuoxinweilai/p/9990191.html
②:
matlab设计gui文本框,怎么获取文本框输入的字符呢?_百度知道
https://zhidao.baidu.com/question/751372596254114212.html
③
ARMA Model Specifications - MATLAB & Simulink - MathWorks 中国
https://ww2.mathworks.cn/help/econ/arma-models.html?searchHighlight=arma&s_tid=doc_srchtitle
④:
MATLAB产生各种分布的随机数 - 百度文库
https://wenku.baidu.com/view/daa8cfeb02020740bf1e9b70.html
HU算法:用返回的七维向量作为一个图像的特征
%**************************************************************************
%图像检索——形状特征提取
%利用HU的七个不变矩作为形状特征向量
%Image : 输入图像数据
%n: 返回七维形状特征行向量
%**************************************************************************
function n = Shape(Image) Image = imread('C:\Users\linuas\Desktop\test.jpg');
[M,N,O] = size(Image);
M = ;
N = ; %--------------------------------------------------------------------------
%彩色图像灰度化
%--------------------------------------------------------------------------
Gray = double(0.3*Image(:,:,)+0.59*Image(:,:,)+0.11*Image(:,:,)); %--------------------------------------------------------------------------
%用Canny边缘检测提取边缘保留边缘灰度图像
%--------------------------------------------------------------------------
% BW = uint8(edge(Gray,'canny'));
Egray = uint8(edge(Gray,'canny'));
for i = :M
for j = :N
if Egray(i,j)==
Gray(i,j)=;
end
end
end %--------------------------------------------------------------------------
%Otsu提出的类判别分析法自动为每一幅廓图像选定阈值,然后用该阈值对图像二值化
%--------------------------------------------------------------------------
%计算灰度级归一化直方图
for i = :
h(i+) = size(find(Gray==i),);
end
p = h/sum(h);
%计算灰度均值
ut = ;
for i = :
ut = i*p(i+)+ut;
end
%计算直方图的零阶累积矩和一阶累积矩:
for k = :
w(k+) = sum(p(:k+));
u(k+) = sum((:k).*p(:k+));
end
%计算类分离指标
deltaB = zeros(,);
for k = :
if w(k+)~=&w(k+)~=
deltaB(k+) = (ut*w(k+)-u(k+))^/(w(k+)*(-w(k+)));
end
end
[value,thresh] = max(deltaB);
% deltaB = zeros(,);
% delta1 = zeros(,);
% delta2 = zeros(,);
% deltaW = zeros(,);
% for k = :
% if w(k+)~=&w(k+)~=
% deltaB(k+) = (ut*w(k+)-u(k+))^/(w(k+)*(-w(k+)));
% delta1(k+) = ;
% delta2(k+) = ;
% for i = :k
% delta1(k+) = (i-u(k+)/w(k+))^*p(i+)+delta1(k+);
% end
% for i = k+:
% delta2(k+) = (i-(ut-u(k+))/(-w(k+)))^*p(k+)+delta2(k+);
% end
% deltaW(k+) = delta1(k+)+delta2(k+);
% end
% end
% for i = :
% if deltaB==
% yita=;
% else
% yita(i) = /(+deltaW(i)./deltaB(i));
% end
% end
% % D的最大值作为最佳阈值
% [value,thresh] = max(yita); %对图像二值化
for i = :M
for j = :N
if Gray(i,j)>=thresh
BW(i,j) = ;
else
BW(i,j) = ;
end
end
end %--------------------------------------------------------------------------
%计算图像质心:(I,J)
%--------------------------------------------------------------------------
m00 = sum(sum(BW)); %零阶矩
m01 = ; %一阶矩
m10 = ; %一阶矩
for i = :M
for j = :N
m01 = BW(i,j)*j+m01;
m10 = BW(i,j)*i+m10;
end
end
I = (m10)/(m00);
J = m01/m00; %--------------------------------------------------------------------------
%中心矩:
%--------------------------------------------------------------------------
u11 = ;
u20 = ; u02 = ;
u30 = ; u03 = ;
u12 = ; u21 = ;
for i = :M
for j = :N
u20 = BW(i,j)*(i-I)^+u20;
u02 = BW(i,j)*(j-J)^+u02;
u11 = BW(i,j)*(i-I)*(j-J)+u11;
u30 = BW(i,j)*(i-I)^+u30;
u03 = BW(i,j)*(j-J)^+u03;
u12 = BW(i,j)*(i-I)*(j-J)^+u12;
u21 = BW(i,j)*(i-I)^*(j-J)+u21;
end
end
u20 = u20/m00^;
u02 = u02/m00^;
u11 = u11/m00^;
u30 = u30/m00^(/);
u03 = u03/m00^(/);
u12 = u12/m00^(/);
u21 = u21/m00^(/);
%--------------------------------------------------------------------------
%7个Hu不变矩:
%--------------------------------------------------------------------------
n() = u20+u02;
n() = (u20-u02)^+*u11^;
n() = (u30-*u12)^+(u03-*u21)^;
n() = (u30+u12)^+(u03+u21)^;
n() = (u30-*u12)*(u30+u12)*((u30+u12)^-*(u03+u21)^)+(u03-*u21)*(u03+u21)*((u03+u21)^-*(u30+u12)^);
n() = (u20-u02)*((u30+u12)^-(u03+u21)^)+*u11*(u30+u12)*(u03+u21);
n() = (*u21-u03)*(u30+u12)*((u30+u12)^-*(u03+u21)^)+(u30-*u12)*(u03+u21)*((u03+u21)^-*(u30+u12)^);% %--------------------------------------------------------------------------
% %内部归一化:
% %--------------------------------------------------------------------------
en = mean(n);
delta = sqrt(cov(n));
n = abs(n-en)/(*delta);







