C # Преобразование сжатия TIFF JPEG в сжатие TIFFCCITT4 дает много шума - PullRequest
1 голос
/ 02 декабря 2010

Для механизма распознавания мне нужно заполнить механизм распознавания файлами TIFF с помощью сжатия CCITT4.Наш сканер выводит файлы TIFF со сжатием JPEG.Я хочу конвертировать эти файлы с помощью C #, используя System.Drawing.Imaging.

Это приводит к изображениям с большим шумом.Как я могу уменьшить шум?

Мой код:

        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;

1 Ответ

1 голос
/ 16 июля 2012

Как сказал Браннон , Ccitt4 - это двоичный формат (черный / белый), поэтому ваше изображение автоматически преобразовывается в двоичную форму.Документация гласит: " Ccitt3, Ccitt4 и Rle требуют, чтобы значение PixelFormat было установлено на BlackWhite . При установке любого другого значения PixelFormat значение свойства сжатия сбрасывается на По умолчанию. "

Вы можете попытаться уменьшить шум, выбрав лучший порог бинаризации.Вы можете посмотреть на алгоритмы, предоставляемые библиотеками изображений с открытым исходным кодом, такие как AForge.Net или EmguCV .

...