3

OCR エンジンの場合、OCR エンジンに CCITT4 圧縮の TIFF ファイルを供給する必要があります。当社のスキャナーは 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;
4

1 に答える 1

1

Brannonが言ったように、Ccitt4 はバイナリ形式 (黒/白) であるため、画像は自動的に 2 値化されます。ドキュメントには、「Ccitt3、Ccitt4、および Rle では、PixelFormat の値をBlackWhiteに設定する必要があります。PixelFormatを他の値に設定すると、Compression プロパティの値が Default にリセットされます。

より適切な 2 値化しきい値を選択することで、ノイズを減らすことができます。AForge.NetEmguCVなどのオープンソース イメージング ライブラリによって提供されるアルゴリズムを確認できます。

于 2012-07-16T04:55:04.983 に答える