我正在写一个图像二值化算法,它简单地将每个像素的亮度值(灰度图像)转换为黑色或白色。目前,对每个像素进行二值化的算法大致如下
if( grayscale[x] < thresholdValue)
{
bitonal[x] = 1;
}
(这实际上是实际算法的简化,因为双色图像实际上是一个位压缩图像(每个数组索引包含8个像素),所以我实际上是在当前数组索引中位压缩1…但我认为这不会改变我的问题。
我要做的是去掉if语句的必要性。
我想的是按照这个思路做点什么。用灰度减去阈值,然后执行一些位操作技巧来清除或移位位,以便如果
(grayscale[x]-threshold) is less than 0, I get a 0. otherwise I would get a 1
的结果。如果用另一种方法更容易做到这一点,那也可以……只要我能摆脱分支机构的说法…感谢任何帮助… 最佳答案
bitonal[x] = (grayscale[x] < thresholdValue);