形状特征提取-七个不变矩--matlab实现
来源:互联网 发布:linux命令解压缩 编辑:程序博客网 时间:2024/06/05 22:47
不变矩在图像特征提取及目标识别中的应用
http://www.docin.com/p-1180583216.html
http://www.cnblogs.com/xuepei/p/3958300.html?utm_source=tuicool&utm_medium=referral
review
http://blog.csdn.net/Violette_/article/details/50769849
%**************************************************************************%图像检索——形状特征提取%利用HU的七个不变矩作为形状特征向量%Image : 输入图像数据%n: 返回七维形状特征行向量%**************************************************************************function n = Shape(Image)% Image = imread('E:\\1\\1.jpg');% [M,N,O] = size(Image);M = 256;N = 256;%--------------------------------------------------------------------------%彩色图像灰度化%--------------------------------------------------------------------------Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3));%--------------------------------------------------------------------------%用Canny边缘检测提取边缘保留边缘灰度图像%--------------------------------------------------------------------------% BW = uint8(edge(Gray,'canny'));Egray = uint8(edge(Gray,'canny'));for i = 1:M for j = 1:N if Egray(i,j)==0 Gray(i,j)=0; end endend%--------------------------------------------------------------------------%Otsu提出的类判别分析法自动为每一幅廓图像选定阈值,然后用该阈值对图像二值化%--------------------------------------------------------------------------%计算灰度级归一化直方图for i = 0:255 h(i+1) = size(find(Gray==i),1);endp = h/sum(h);%计算灰度均值ut = 0;for i = 0:255 ut = i*p(i+1)+ut;end%计算直方图的零阶累积矩和一阶累积矩:for k = 0:254 w(k+1) = sum(p(1:k+1)); u(k+1) = sum((0:k).*p(1:k+1));end%计算类分离指标deltaB = zeros(1,255);for k = 0:254 if w(k+1)~=0&w(k+1)~=1 deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1))); endend[value,thresh] = max(deltaB);% deltaB = zeros(1,255);% delta1 = zeros(1,255);% delta2 = zeros(1,255);% deltaW = zeros(1,255);% for k = 0:254% if w(k+1)~=0&w(k+1)~=1% deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1)));% delta1(k+1) = 0;% delta2(k+1) = 0;% for i = 0:k% delta1(k+1) = (i-u(k+1)/w(k+1))^2*p(i+1)+delta1(k+1);% end% for i = k+1:255% delta2(k+1) = (i-(ut-u(k+1))/(1-w(k+1)))^2*p(k+1)+delta2(k+1);% end% deltaW(k+1) = delta1(k+1)+delta2(k+1);% end% end% for i = 1:255% if deltaB==0% yita=0;% else% yita(i) = 1/(1+deltaW(i)./deltaB(i));% end% end% % D的最大值作为最佳阈值% [value,thresh] = max(yita);%对图像二值化for i = 1:M for j = 1:N if Gray(i,j)>=thresh BW(i,j) = 1; else BW(i,j) = 0; end endend%--------------------------------------------------------------------------%计算图像质心:(I,J)%--------------------------------------------------------------------------m00 = sum(sum(BW)); %零阶矩m01 = 0; %一阶矩 m10 = 0; %一阶矩for i = 1:M for j = 1:N m01 = BW(i,j)*j+m01; m10 = BW(i,j)*i+m10; endendI = (m10)/(m00);J = m01/m00;%--------------------------------------------------------------------------%中心矩:%--------------------------------------------------------------------------u11 = 0;u20 = 0; u02 = 0;u30 = 0; u03 = 0;u12 = 0; u21 = 0;for i = 1:M for j = 1:N u20 = BW(i,j)*(i-I)^2+u20; u02 = BW(i,j)*(j-J)^2+u02; u11 = BW(i,j)*(i-I)*(j-J)+u11; u30 = BW(i,j)*(i-I)^3+u30; u03 = BW(i,j)*(j-J)^3+u03; u12 = BW(i,j)*(i-I)*(j-J)^2+u12; u21 = BW(i,j)*(i-I)^2*(j-J)+u21; endendu20 = u20/m00^2;u02 = u02/m00^2;u11 = u11/m00^2;u30 = u30/m00^(5/2);u03 = u03/m00^(5/2);u12 = u12/m00^(5/2);u21 = u21/m00^(5/2);%--------------------------------------------------------------------------%7个Hu不变矩:%--------------------------------------------------------------------------n(1) = u20+u02;n(2) = (u20-u02)^2+4*u11^2;n(3) = (u30-3*u12)^2+(u03-3*u21)^2;n(4) = (u30+u12)^2+(u03+u21)^2;n(5) = (u30-3*u12)*(u30+u12)*((u30+u12)^2-3*(u03-3*u21)^2)+(u03-3*u21)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);n(6) = (u20-u02)*((u30+u12)^2-(u03+u21)^2)+4*u11*(u30+u12)*(u03+u21);n(7) = (3*u21-u03)*(u30+u12)*((u30+u12)^2-3*(u03-3*u21)^2)+(u30-3*u21)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);% %--------------------------------------------------------------------------% %内部归一化:% %--------------------------------------------------------------------------% en = mean(n);% delta = sqrt(cov(n));% n = abs(n-en)/(3*delta);
0 1
- 形状特征提取-七个不变矩--matlab实现
- MATLAB图像处理-特征提取-形状特征 方法小结
- 利用Hu不变矩进行特征提取
- 形状特征的提取
- matlab实现彩色图像特征提取1
- opencv:基于不变矩方法的图像特征提取
- 纹理特征提取 及LBP纹理特征matlab实现
- MATLAB特征提取代码
- HOG特征提取 matlab
- matlab图像特征提取
- matlab--图像特征提取
- MATLAB提取区域特征
- matlab 提取HOG特征
- 图像特征提取(形状特征,空间关系特征)
- 图像特征提取(颜色,纹理,形状)
- Matlab/OpenCV自己实现Harris特征点提取和匹配
- 特征提取——生成样本矩阵(MATLAB实现)
- MFCC特征提取的MatLab的代码实现
- 2-SAT问题(宇航员分组,LA 3713)
- #193. 字符串查询
- cdh安装最少需要几个库
- 博客迁移备忘
- gradle教程
- 形状特征提取-七个不变矩--matlab实现
- 面试基础题--J2SE基础
- Mongodb概述(三)
- 数字三角形问题
- Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- hdu3549-Flow Problem(最大流&EK)
- zzulioj 1875
- meta实现页面加载完毕几秒后跳转至指定URL
- 最长上升子序列