opencv 亚像素 算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
opencv 亚像素 算法

亚像素算法亚像素算法的基本思路就是将一个像素再分为更小的单位。 也就是说1个像素的灰度值分为256级。所以,以这类系统为例,进行亚像素计算就要把像素分为255个小单位。 或许,可以这样来理解“亚像素算法”。一个像素的灰度值从0到255,0是纯黑,255是纯白。不妨把像素想像成是一个由255个小像素所组成的集合。而每个小像素都是一个独立的小镜子,那就是说一个像素里面有255个小镜子。 灰度值则可以看作反光的小镜子数量:0表示255个小镜子全都没有反光;255表示255个镜子一起反光。上面讲到的所设定的临界灰度值100,则可表示255个镜子中有100个在反光,另外155个镜子没有反光。 现在,回到上面的测量例子中来。 如何算亚像素值呢?非常简单,亚像素值(白色部分)=该像素灰度值/256;亚像素值(黑色部分)=1-亚像素值(白色部分)。 另外,除了这种计算方法,还有其他几种计算亚像素值的方法: (1)亚像素值(白色部分)=(该像素灰度值×(临界灰度值/256))/256 亚像素值(黑色部分)=1-亚像素值(白色部分) (2)亚像素值(白色部分)=后像素值/ (前像素值 +后像素值)亚像素值(黑色部分)=1-亚像素值(白色部分) (3)亚像素值(白色部分)=(像素值-前像素值)/ (后像素值-前像素值) 亚像素值(黑色部分)=1-亚像素值(白色部分) 以上就是亚像素算法的基本原理。 在结束这个算法讨论之前,有两点必须注意:一是在实际情况下,大家不可能看到像素的一半是黑色另一半是白色,这只是为了方便大家理解所画出来的,而真实的情况是一个像素就只是一小块灰色,没有明暗的分别。明暗的区别只能在像素与像素间显现出来;二是在描述亚像素的基本算法时,所说“小镜子”的概念完全是为了方便大家理解,比纯数学语言表达更为易懂。 亚像素  英文名:Sub Pixel?  定义: ?  面阵摄像机的成像面以像素为最小单位。例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。实际上“亚像素”应该是存在的,只是硬件上没有个细微的传感器把它检测出来。于是软件上把它近似地计算出来。 ?  计算: ?  数码摄像机的成像面的分辨率以像素数量来衡量。隔行TV的分辨率是576x768个像素。 像素中心之间的距离有几个至十几个微米不等。为了最大限度利用图像信息来提高分辨率,有人提出了Sub-Pixel概念。意思是说,在两个物理像素之间还有像素,称之为Sub-Pixel,它完全是通过计算方法的出来的。这里提出计算方法。 ?  如果原始图像是n行m列的,希望做k细分的Sub-Pixel,这样就有新的行N和列M,有 ?  N = k*n ?   M = k*m ?   原来相邻4个像素包含的区域现在变成了(k+1)*(k+1)的区域了;要填满这个(k+1)*(k+1)的区域,实际上就是从一个小正方形映照到一个大正方形的过程。在数学上用双线性插值得算法可以轻松搞定。(二次或者三次样条曲线)。下面是算法的代码: ?   XYPNT qdot(?   XYPNT d[4], //d[4] 顺时针排列?   XYPNT a //含有要插入的点的位置?   ){?   XYPNT r; //工作单元?   int i;?   float x0,y0,x1,y1; //?   PNT z[4];?   float ap,bt,ax,ay;?   x0=d[0].q.x;y0=d[0].q.y;?   x1=d[2].q.x;y1=d[2].q.y;?   r=a;?   ax=a.q.x;ay=a.q.y;?   for(i=0;i4;i++)z[i]=d[i].pnt;?   ap=(ax-x0)/(x1-x0);bt=(ay-y0)/(y1-y0);?   r.pnt.r=(1.-ap)*(1.-bt)*z[0].r+bt*(1.-ap)*z[3].r+ap*(1.-bt)*z[1].r+ap*bt*z[2].r;?   r.pnt.g=(1.-ap)*(1.-bt)*z[0].g+bt*(1.-ap)*z[3].g+ap*(1.-bt)*z[1].g+ap*bt*z[2].g;?   r.pnt.b=(1.-ap)*(1.-bt)*z[0].b+bt*(1.-ap)*z[3].b+ap*(1.-bt)*z[1].b+ap*bt*z[2].b; ?  return r; ?  } ?  其中数据结构:?   str

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档