示例:凸包
使用
cnvxhull 函数查找矩阵 M 中具有前景强度值 fg 的像素凸包。输出经二值化处理,使得凸包之内的值为 1,之外为 0。1982 年出版的 A. Rosenfeld 和 A. C. Kak 合著的
Digital Picture Processing (《数字图片处理》) 中的第 269 页介绍了所使用的算法。
凸包的查找方式为:选取 P1 作为 M 中像素集最左且最靠上的点,选择 L1 作为穿过 P1 的水平线。然后绕 P1 旋转 L1,直到在像素集中找到值 fg 为止。调用所获得的旋转线 L2,并使 P2 成为沿 L2 方向距离 P1 最远的点,然后重复该算法,直到 Pn = P1。{P1,P2, ... , Pn-1} 的并集即为凸包的顶点。
1. 定义输入矩阵。
2. 使用前景像素值 1 计算像素集的凸包。
该凸包包含原始矩阵中值为 1 的所有像素,并且是最小的凸集。
3. 将前景像素值选为 2,并重新计算凸包。
4. 将玉米粒的二值图像与其凸包叠加,演示凸包描述图像中轮廓和孔的用处。
5. 查找二值图像中白色 (1) 像素的凸包,然后从凸包中减去图像从而得到凸形区缺额。将二值图像和凸包进行标定,而不是直接相减。这样,凸包外的区域为灰色,图像像素为黑色,而凸形区缺额为白色。
6. 并排显示 M 、Mbin255 和 Mdef 。
(corn1.bmp)
(mbin_255.bmp)
(mdef.bmp)
凸包之外的区域在 M 中为灰色,在 Mbin55 中为黑色,而在最终图像 Mdef 中凸形区缺额为白色。
复制表达式