对于OCR引擎,我需要使用CCITT4压缩为TCR文件提供OCR引擎。 我们的扫描仪输出JPEG压缩的TIFF文件。我想使用System.Drawing.Imaging使用C#转换这些文件。
这会导致图像中出现大量噪点。如何降低噪音?
我的代码:
List<byte[]> fRet = new List<byte[]>();
ImageCodecInfo fImageCodecInfo = GetEncoderInfo("image/tiff");
EncoderParameters fEncoderParameters = new EncoderParameters(3);
fEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
fEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodNonInterlaced);
fEncoderParameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderNonProgressive);
//
Image fOrgTiff = Image.FromStream(pInputTiff);
Guid objGuid = fOrgTiff.FrameDimensionsList[0];
FrameDimension objDimension = new FrameDimension(objGuid);
int frameCount = fOrgTiff.GetFrameCount(objDimension);
for (int i = 0; i < frameCount; i++)
{
MemoryStream ms = new MemoryStream();
fOrgTiff.SelectActiveFrame(objDimension, i);
fOrgTiff.Save(ms, fImageCodecInfo, fEncoderParameters);
ms.Position = 0;
fRet.Add(ms.GetBuffer());
}
return fRet;
答案 0 :(得分:1)
正如Brannon所说,Ccitt4是二进制格式(黑/白),因此您的图像会自动进行二值化。 文档说:“The Ccitt3, Ccitt4, and Rle require that the PixelFormat value be set to BlackWhite. Setting the PixelFormat to any other value resets the Compression property value to Default.”
您可以尝试通过选择更好的二值化阈值来降低噪音。您可以查看由AForge.Net或EmguCV等开源图像库提供的算法。