经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » MATLAB » 查看文章
matlab界面UI设计资料
来源:cnblogs  作者:会武术之白猫  时间:2019/6/6 8:53:20  对本文有异议

一个实现图像灰度处理并归类于某已知相似图片的程序

软件: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算法:用返回的七维向量作为一个图像的特征

  1. 1 %**************************************************************************
  2. 2 %图像检索——形状特征提取
  3. 3 %利用HU的七个不变矩作为形状特征向量
  4. 4 %Image : 输入图像数据
  5. 5 %n: 返回七维形状特征行向量
  6. 6 %**************************************************************************
  7. 7 function n = Shape(Image)
  8. 8
  9. 9 Image = imread('C:\Users\linuas\Desktop\test.jpg');
  10. 10 [M,N,O] = size(Image);
  11. 11 M = 256;
  12. 12 N = 256;
  13. 13
  14. 14 %--------------------------------------------------------------------------
  15. 15 %彩色图像灰度化
  16. 16 %--------------------------------------------------------------------------
  17. 17 Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3));
  18. 18
  19. 19 %--------------------------------------------------------------------------
  20. 20 %Canny边缘检测提取边缘保留边缘灰度图像
  21. 21 %--------------------------------------------------------------------------
  22. 22 % BW = uint8(edge(Gray,'canny'));
  23. 23 Egray = uint8(edge(Gray,'canny'));
  24. 24 for i = 1:M
  25. 25 for j = 1:N
  26. 26 if Egray(i,j)==0
  27. 27 Gray(i,j)=0;
  28. 28 end
  29. 29 end
  30. 30 end
  31. 31
  32. 32 %--------------------------------------------------------------------------
  33. 33 %Otsu提出的类判别分析法自动为每一幅廓图像选定阈值,然后用该阈值对图像二值化
  34. 34 %--------------------------------------------------------------------------
  35. 35 %计算灰度级归一化直方图
  36. 36 for i = 0:255
  37. 37 h(i+1) = size(find(Gray==i),1);
  38. 38 end
  39. 39 p = h/sum(h);
  40. 40 %计算灰度均值
  41. 41 ut = 0;
  42. 42 for i = 0:255
  43. 43 ut = i*p(i+1)+ut;
  44. 44 end
  45. 45 %计算直方图的零阶累积矩和一阶累积矩:
  46. 46 for k = 0:254
  47. 47 w(k+1) = sum(p(1:k+1));
  48. 48 u(k+1) = sum((0:k).*p(1:k+1));
  49. 49 end
  50. 50 %计算类分离指标
  51. 51 deltaB = zeros(1,255);
  52. 52 for k = 0:254
  53. 53 if w(k+1)~=0&w(k+1)~=1
  54. 54 deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1)));
  55. 55 end
  56. 56 end
  57. 57 [value,thresh] = max(deltaB);
  58. 58 % deltaB = zeros(1,255);
  59. 59 % delta1 = zeros(1,255);
  60. 60 % delta2 = zeros(1,255);
  61. 61 % deltaW = zeros(1,255);
  62. 62 % for k = 0:254
  63. 63 % if w(k+1)~=0&w(k+1)~=1
  64. 64 % deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1)));
  65. 65 % delta1(k+1) = 0;
  66. 66 % delta2(k+1) = 0;
  67. 67 % for i = 0:k
  68. 68 % delta1(k+1) = (i-u(k+1)/w(k+1))^2*p(i+1)+delta1(k+1);
  69. 69 % end
  70. 70 % for i = k+1:255
  71. 71 % delta2(k+1) = (i-(ut-u(k+1))/(1-w(k+1)))^2*p(k+1)+delta2(k+1);
  72. 72 % end
  73. 73 % deltaW(k+1) = delta1(k+1)+delta2(k+1);
  74. 74 % end
  75. 75 % end
  76. 76 % for i = 1:255
  77. 77 % if deltaB==0
  78. 78 % yita=0;
  79. 79 % else
  80. 80 % yita(i) = 1/(1+deltaW(i)./deltaB(i));
  81. 81 % end
  82. 82 % end
  83. 83 % % D的最大值作为最佳阈值
  84. 84 % [value,thresh] = max(yita);
  85. 85
  86. 86 %对图像二值化
  87. 87 for i = 1:M
  88. 88 for j = 1:N
  89. 89 if Gray(i,j)>=thresh
  90. 90 BW(i,j) = 1;
  91. 91 else
  92. 92 BW(i,j) = 0;
  93. 93 end
  94. 94 end
  95. 95 end
  96. 96
  97. 97 %--------------------------------------------------------------------------
  98. 98 %计算图像质心:(I,J)
  99. 99 %--------------------------------------------------------------------------
  100. 100 m00 = sum(sum(BW)); %零阶矩
  101. 101 m01 = 0; %一阶矩
  102. 102 m10 = 0; %一阶矩
  103. 103 for i = 1:M
  104. 104 for j = 1:N
  105. 105 m01 = BW(i,j)*j+m01;
  106. 106 m10 = BW(i,j)*i+m10;
  107. 107 end
  108. 108 end
  109. 109 I = (m10)/(m00);
  110. 110 J = m01/m00;
  111. 111
  112. 112 %--------------------------------------------------------------------------
  113. 113 %中心矩:
  114. 114 %--------------------------------------------------------------------------
  115. 115 u11 = 0;
  116. 116 u20 = 0; u02 = 0;
  117. 117 u30 = 0; u03 = 0;
  118. 118 u12 = 0; u21 = 0;
  119. 119 for i = 1:M
  120. 120 for j = 1:N
  121. 121 u20 = BW(i,j)*(i-I)^2+u20;
  122. 122 u02 = BW(i,j)*(j-J)^2+u02;
  123. 123 u11 = BW(i,j)*(i-I)*(j-J)+u11;
  124. 124 u30 = BW(i,j)*(i-I)^3+u30;
  125. 125 u03 = BW(i,j)*(j-J)^3+u03;
  126. 126 u12 = BW(i,j)*(i-I)*(j-J)^2+u12;
  127. 127 u21 = BW(i,j)*(i-I)^2*(j-J)+u21;
  128. 128 end
  129. 129 end
  130. 130 u20 = u20/m00^2;
  131. 131 u02 = u02/m00^2;
  132. 132 u11 = u11/m00^2;
  133. 133 u30 = u30/m00^(5/2);
  134. 134 u03 = u03/m00^(5/2);
  135. 135 u12 = u12/m00^(5/2);
  136. 136 u21 = u21/m00^(5/2);
  137. 137 %--------------------------------------------------------------------------
  138. 138 %7Hu不变矩:
  139. 139 %--------------------------------------------------------------------------
  140. 140 n(1) = u20+u02;
  141. 141 n(2) = (u20-u02)^2+4*u11^2;
  142. 142 n(3) = (u30-3*u12)^2+(u03-3*u21)^2;
  143. 143 n(4) = (u30+u12)^2+(u03+u21)^2;
  144. 144 n(5) = (u30-3*u12)*(u30+u12)*((u30+u12)^2-3*(u03+u21)^2)+(u03-3*u21)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);
  145. 145 n(6) = (u20-u02)*((u30+u12)^2-(u03+u21)^2)+4*u11*(u30+u12)*(u03+u21);
  146. 146 n(7) = (3*u21-u03)*(u30+u12)*((u30+u12)^2-3*(u03+u21)^2)+(u30-3*u12)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);% %--------------------------------------------------------------------------
  147. 147 % %内部归一化:
  148. 148 % %--------------------------------------------------------------------------
  149. 149 en = mean(n);
  150. 150 delta = sqrt(cov(n));
  151. 151 n = abs(n-en)/(3*delta);

 

原文链接:http://www.cnblogs.com/ljy1227476113/p/10980394.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号