【问题标题】:convert 24Bit per pixel to 8 bit tiff将每像素 24 位转换为 8 位 tiff
【发布时间】:2011-01-01 13:18:24
【问题描述】:

我想转换每像素 24 位 (Rgb) int 每像素 8 位 tiff 图像是否有任何代码要转换,请分享或告诉我 c sharp 中的算法

【问题讨论】:

    标签: image image-processing image-manipulation tiff


    【解决方案1】:

    假设您的意思是要将 24 位彩色图像转换为 8 位彩色图像,那么您需要研究抖动算法。

    此页面描述了一个非常简单的抖动算法:http://wwwhome.cs.utwente.nl/~schooten/graphics/ 它的质量不是很高,但作为第一次尝试很容易理解。

    之后,试试 Floyd-Steinberg 抖动算法。 http://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering

    【讨论】:

      【解决方案2】:

      这是一个很好的 C# 代码教程:

      http://www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale

      免责声明:我在 Atalasoft 工作。

      如果您对商业解决方案感兴趣,可以通过DotImage 进行此操作。转换单帧 tiff 的代码是

      AtalaImage img = new AtalaImage("file.tif");
      img = img.GetChangedPixelFormat(PixelFormat.Pixel8bppGrayscale);
      img.Save("gray.tif", new TiffEncoder(), null);
      

      如果您有多页 TIFF,则只需循环浏览它们。

      【讨论】:

        【解决方案3】:

        您的意思是如何将 RGB 图像转换为灰度图像?一个简单的基于感知的方法是将其转换为YIQ colorspace,并丢弃色度信息。您可以通过以下等式生成亮度部分:

         l = (0.299*r) + (0.583*g) + (0.114*b)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-17
          • 1970-01-01
          • 1970-01-01
          • 2011-12-01
          • 2022-11-25
          • 1970-01-01
          相关资源
          最近更新 更多