我想转换每像素24位(Rgb)int每像素8位tiff图像是否有任何代码转换请分享或告诉我在c锐利的算法
假设您想要将24位彩色图像转换为8位彩色图像,那么您需要研究抖动算法 .
此页面描述了一个非常简单的抖动算法:http://wwwhome.cs.utwente.nl/~schooten/graphics/它首先尝试易于理解 .
之后,请参阅Floyd-Steinberg抖动算法 . http://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering
你的意思是如何将RGB图像转换为灰度图像?一个简单的基于感知的方法是将其转换为YIQ colorspace并丢弃色度信息 . 您可以通过以下等式生成亮度部分:
l = (0.299*r) + (0.583*g) + (0.114*b)
这是一个很好的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 回答
假设您想要将24位彩色图像转换为8位彩色图像,那么您需要研究抖动算法 .
此页面描述了一个非常简单的抖动算法:http://wwwhome.cs.utwente.nl/~schooten/graphics/它首先尝试易于理解 .
之后,请参阅Floyd-Steinberg抖动算法 . http://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering
你的意思是如何将RGB图像转换为灰度图像?一个简单的基于感知的方法是将其转换为YIQ colorspace并丢弃色度信息 . 您可以通过以下等式生成亮度部分:
这是一个很好的C#代码教程:
http://www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale
免责声明:我在Atalasoft工作 .
如果您对商业解决方案感兴趣,可以使用DotImage执行此操作 . 转换单个框架tiff的代码是
如果你有多重TIFF,你只需要循环它们 .