TT = max_index(index) - 2; 2 {' j; g6 J' L/ T, J& L: X1 T3 r
6 o; @2 u- i0 f% q& F) e# B
R = zeros(m, n); ) s7 x; I& W2 M: w# c: X# k
for i = 1:m4 p+ p/ G& j0 i/ i# s7 [2 X
for j = 1:n0 C3 Q2 M4 p! S6 V4 N6 @7 q4 [
if p(i, j) < TT2 s v5 v\" q+ D\" c$ W
R(i, j) = 0; , {* ^+ z+ ^& H2 p9 z: M0 {
else/ x+ |- E9 t8 c; _# F4 J/ w
R(i, j) = 256; ' t# x. b' r7 l2 r5 w3 U
end# P8 L8 Q( {) z. ^* T! ?4 j) z\" ?
end % R5 W9 k7 [3 Z6 v' i0 b+ J2 g4 D7 L: E
end 1 O) W l t; T' N a
subplot(1,2,2); F$ n/ @2 Q. d
imshow(R); 3 w8 M( k7 s0 z\" i& S
title('二值图');
复制代码
18.代码首先寻找灰度直方图中的双峰(双峰往往对应于两个主要的灰度区域),找到这些双峰的峰顶位置。. K) V C3 w. U. p* _# S' v1 n
19.然后选择灰度直方图双峰之间的谷底位置作为阈值 TT。8 u2 d" q3 h* ?9 z- a
20.接下来,通过一个嵌套循环,将灰度图像 p 根据阈值 TT 进行二值化处理,将像素值小于阈值的设为 0,大于等于阈值的设为 256。3 a2 y; L; F: J- s8 p" i' y
21.最后,将二值化后的图像 R 显示在第二个子图中,标题为 '二值图'。 5 E+ N4 B- {2 k/ G. v \6 C, u; z) [8 j4 F- v! U+ C
这段代码的核心是对灰度直方图的分析以及基于双峰寻找的阈值处理(二值化),将图像转换为只有两个值(0 或 256)的二值图像。/ h3 s1 _% {' G. O9 ^+ i