【发布时间】:2011-06-27 09:44:00
【问题描述】:
在有人因为我不检查其他帖子而抨击我之前,我已经这样做了。我有一个关于将图像转换为灰度的现有技术之一的具体问题。
我已经阅读了关于 SO 的其他帖子,并且基本上从this site 的教程中复制了技术 3(ColorMatrix)。它工作得非常、非常、迅速。
我遇到的问题是我需要的是纯 BW 图像。 (即:如果平均值(R,B,G)> 200 => 白色,否则为黑色)。我以直接的方式实现了它,它实际上比教程中的灰度算法花费了近 10 倍。
我不是图像处理专家,想知道是否有任何方法可以修改教程中的 sn-p 以将图像转换为纯黑白。如果没有,任何有效的方法都可以。
编辑:
这是我用于黑白的代码(无脑方法):
public Bitmap make_bw(Bitmap original) {
Bitmap output = new Bitmap(original.Width, original.Height);
for (int i = 0; i < original.Width; i++) {
for (int j = 0; j < original.Height; j++) {
Color c = original.GetPixel(i, j);
int average = ((c.R + c.B + c.G) / 3);
if (average < 200)
output.SetPixel(i, j, Color.Black);
else
output.SetPixel(i, j, Color.White);
}
}
return output;
}
【问题讨论】:
-
您实际上并不需要颜色矩阵来转换为 1 位(纯黑白)图像。尝试第二种解决方案,看看是否更快。 (如果没有,请发布您的代码。)
-
cal 你粘贴了一些性能很差的代码?如果你只添加一个“如果”的话,怎么能增加 10 倍的时间呢?
标签: c# .net image image-processing