1 灰度操作之 滞后延时
*滞后阈值
hysteresis_threshold (ImageInvert, RegionHysteresis, 190, 220, 3)
这句话的意思就是,逐个判断这个图片区域里像素的灰度值,如果这个值小于190就不考虑了pass掉,如果大于220就直接入选。值在190和220之间的像素备选。如果这个像素和大于220的像素的距离小于3,那么它将被选中。
我之前讲过动态阈值,他和动态阈值有什么区域呢?
动态阈值有个问题,那个mask区域不是很好确定,我在做瑕疵项目的时候。
如果mask选的太大,可能把小的瑕疵平均了就被干掉了(而且太大,会很耗时),如果mask选小了,大的就会选不到。如果消磁在图像的边缘,我还没搞清楚,这个mask是怎么工作的。
所以,我就寻找了到了这个hysteresis_threshold ,事实证明,这个还是好用的。
“ 缺点1 ”:
不过他和动态阈值相比有个缺点,动态阈值不在乎光线不均匀的问题,应为他是判断一个像素和他周围的像素的平均值比。
但是,这个hysteresis_threshold 他的像素值的范围是写死的,如果图像的打光不均匀还是会顾此失彼。所以此时我们需要一个图像增强的滤波算法,进行一个大的增强,让大家的灰度水平达到一个很高的水平,再使用hysteresis_threshold 。比如 emphasize :
emphasize (ImageReduced, ImageEmphasize, 7, 15, 6)
*滞后阈值
hysteresis_threshold (ImageEmphasize, RegionHysteresis, 190, 220, 3)
“ 缺点2 ”:
按照他的规则,hysteresis_threshold 只能针对白色区域筛选,如果我想筛选的黑色怎么办? 其实也很简单,就是通过invert_image 将图片先进行反色,这样选择的白色,就是之前的黑色。
emphasize (ImageReduced, ImageEmphasize, 7, 15, 6)
invert_image (ImageEmphasize, ImageInvert)
*滞后阈值
hysteresis_threshold (ImageInvert, RegionHysteresis, 190, 220, 3)
2 灰度操作之灰度选择select_gray
有时一个瑕疵的灰度是很斑驳的,意思就是他的灰度值是混乱的,此时我们可以通过 'deviation’这个参数去获得灰度的混乱程度;
gray_features (RusultBlack_3, Image, ‘deviation’, Value1)
当然也可以进行筛选。
select_gray (IntersectionRegions, Image, RusultBlack_1, ‘deviation’, ‘and’, 11.9, 1000)
这样可以过滤掉一些颜色很均匀的区域。
这样的选择还有很多,如果通过平均值进行筛选:
select_gray (IntersectionRegions, Image, RusultBlack_11, ‘mean’, ‘and’, 0, 113)