图形图像处理-之-误差扩散 下讲 - 更快速度或更好效果.pdf

图形图像处理-之-误差扩散 下讲 - 更快速度或更好效果.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形图像处理-之-误差扩散下篇 - 更快的速度或更好的效果 HouSisong@GM 2010.01.05 (2010.01.06 补充误差扩散算法并行化的一些探讨 ) tag: 误差扩散,真彩色到高彩色转换,色阶,减色,半色调 摘要: 在图像的颜色转换过程中,由于颜色值域的不同,转换过程中可能会产生误差; 误差扩散算法通过将误差传递到周围像素而减轻其造成的视觉误差。 上篇:简单实现; 中篇:简单的速度优化; 下篇: 更快的速度或更好的效果. (测试源代码下载: http://cid- 10/self.aspx/.Public/ErrorDiffuse.zip ) 正文: 代码使用C++,编译器:VC2005 测试平台:(CPU:i7-920(3.44G); 内存:DDR3 1333(三通道); 编译器:VC2005) (请先参看文章的上篇和中篇) A:更快的速度 前面的文章用使用的误差传递系数为: * 2 1 1 0 /4 为速度和质量做了折中;而在某些应用场合下,可能希望更快的实时进行误差扩散; 这时可以考虑这样的误差扩散系数: * 1 0 1 0 /2 甚至于: * 1 /1 这时误差只用传递到右边,实现起来就简单多了: //扩散模板 // * 1 /1 void CvsPic32To16_ErrorDiffuse_Line_fast(UInt16 * pDst, const Color32 * pSrc, long width){ TErrorColor HErr; HErr.dR = 0 ; HErr.dG = 0 ; HErr.dB = 0 ; for ( long x = 0 ;x width; ++ x) { long cB = (pSrc[x].b + HErr.dB); long cG = (pSrc[x].g + HErr.dG); long cR = (pSrc[x].r + HErr.dR); long rB = BestRGB16_555Color_Table[cB]; long rG = BestRGB16_555Color_Table[cG]; long rR = BestRGB16_555Color_Table[cR]; pDst[x] = rB | (rG 5 ) | (rR 10 ); HErr.dB = (cB - getC8Color(rB)) ; HErr.dG = (cG - getC8Color(rG)) ; HErr.dR = (cR - getC8Color(rR)) ; } } void CvsPic32To16_ErrorDiffuse_fast( const TPicRegion_RGB16_555 dst, const TPixels32Ref src) UInt16 * pDst = (UInt16 * )dst.pdata; const Color32 * pSrc = src.pdata; const long width = src.width; for ( long y = 0 ;y src.height; ++ y){ CvsPic32To16_ErrorDiffuse_Line_fast(pDst,pSrc,width); (UInt8 * )pDst += dst.byte_width; (UInt8 * )pSrc += src.byte_width; } } 速度测试: //////////////////////////////////////////////////////////

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档