之前一直没理解二值化。实际上黑白图像是不需要灰度化的,或者说在matlab里,不需要rgb2gray()这个步骤。传统几个方法,otsu算法和bersen算法。一个是全局阈值,一个是局部阈值。灰度图之后要转化为二值图,则是选择一个阈值,超过它的取灰度极大值,低于它的取灰度极小值,这样一张图就会变成0和255了。

0是黑色,255是白色。从0到255,颜色从暗到亮,逐渐变化。实际上最后的二值图是一个逻辑矩阵,0和1两个值。0为黑色,1为白色。而不管是用bwlabel进行连通域标记,还是用bwareaopen进行连通域的删除,连通域的基本问题就在于4-连通域和8-连通域。4连通域是值,某个像素上下左右四边的像素都有时,这是四联通区域。

1 1 1 1

1 P 1 —> 四连通域, 1 P 1 —> 8连通域

1 1 1 1

那说明现有的二值化图,必须进行反色才行,即j变为~j。0和1互换,这个时候,所有的连通域为白色,即值为1,背景为黑色,值为0,这样进行删除连通域和连通域标记才会有意义。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注