您的位置:首页 > 其它

图像处理的哈哈镜

2016-05-06 20:06 162 查看

图像处理的哈哈镜

说起哈哈镜这个东西,好像已经很长时间没有见过了,这曾经在小时候是带来很多乐趣的东西。哈哈镜嘛,无非就是凹面镜或者凸面镜,什么效果呢?凹面镜把人变瘦了,凸面镜把人变胖了。

反映在图像上呢,就是图像的局部的缩放。注意不是整体的放大或缩小,只是一个区域被放大和缩小。为了简单期间,只讨论圆形的区域,因此无非存在两种情况,圆形区域的中心被放大周匝被缩小,或者中心被缩小周匝被放大,而且由中心到周匝的这个缩小放大时逐渐连续变化的(不是突然从缩小变成了放大)。

因此,我们构造了这样一条曲线(以中心缩小,周匝放大为例):



这张图上,横坐标是目标图像上的点到圆心的距离,纵坐标是原始图像上的点到圆心的距离,如果是蓝线就是不变换喽,如果是红线呢,会发现比如目标图像上距离圆心30左右的点在原始波形上是距离圆心50左右的点,这个意思很明显了,就是中心区域被缩小了。

至于怎么构造这样一条曲线,这是数学的事,恐怕有很多种办法可以构造。这里说两个必须满足的条件:①红线和蓝线的起点和终点必须是相同的,这个意思是说形变只发生在一个圆形区域内,圆形区域外图像不形变。②曲线的导数必须是连续的,试想一下,如果导数不连续,那么反映在图像上那就是缩小到放大的变化过程不连续了,这里尤其要多说一句,曲线的导数连续,要求在曲线的末端(我这图上是100的位置)导数必须为1。

把这个图上的两个曲线做个除法,就是下面这个结果:



这个图实际上说明了一件事,圆心位置的缩放比例是0.5,我们正是根据这个值去构造上面讲的曲线的。

然后剩下的事情就好办了,扫描图像上的点,看看像素是否在圆形区域内(到圆心的距离是不是大于圆的半径),如果不在圆内就原封不动从原始图像上复制过来,如果在圆内,就根据上面的方法找它在原始图像上对应的位置,做插值。

看一下效果,先是原始图像:



下面是处理后的图像,所选区域是以狗鼻子为中心的半径为100的圆。下图中中心点的缩放比例依次为:0.5、0.7、0.8、1.2、1.5、2.0



是不是很好玩?

我估计小女生们喜欢用美颜相机的瘦脸放大眼睛的功能估计是与此类似的算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: