硬體僅支援黑白顯示,需將彩色圖片二值化並盡量保留視覺細節。
Gray = 0.299*R + 0.587*G + 0.114*B(人眼亮度權重)。Gray > 127 ? 255 : 0,簡單但細節喪失嚴重。using AForge.Imaging;
using AForge.Imaging.Filters;
Bitmap src = (Bitmap)Bitmap.FromFile("input.jpg");
src = Grayscale.CommonAlgorithms.RMY.Apply(src); // 灰度化
Bitmap bin = new OrderedDithering().Apply(src); // 有序抖動二值化
bin.Save("output.png");
private static Bitmap WeightGrayScale(Bitmap bmp, Funcf) { var data = bmp.LockBits(new Rectangle(0,0,bmp.Width,bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat); unsafe { byte* ptr = (byte*)data.Scan0; for (int y=0; y (byte)(0.299*r + 0.587*g + 0.114*b));
AForge.Imaging。| 方法 | 細節保留 | 速度 | 適用場景 |
|---|---|---|---|
| 固定閾值 128 | 低 | 極快 | 簡單文檔、條碼 |
| 自適應閾值 | 中 | 中 | 光照不均圖片 |
| 有序抖動 | 高 | 快 | 照片、漸變圖、硬體黑白顯示 |
| Floyd-Steinberg 擴散抖動 | 最高 | 較慢 | 高品質列印 |