亲宝软件园·资讯

展开

基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现

charlee44 人气:3
[toc] # 1. 概述 我在之前的文章[《基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现》][netlink1]中,根据[《Coordinates for Instant Image Cloning》](https://www.cse.huji.ac.il/~danix/mvclone/)这篇论文,详细论述了图像融合中泊松融合算法的优化算法——均值坐标(Mean-Value Coordinates)融合算法的具体实现。其实在这篇论文中,还提出了两种优化实现,能够进一步提升效率,这里就论述一下其优化算法的具体实现。 # 2. 实现 ## 2.1. 原理 均值坐标融合算法的核心思想是算出ROI中每个点的MVC(Mean-Value Coordinates),如果ROI中存在n个点,ROI边界像素为m个点,那么该算法的时间复杂度至少为O(nm)。根据[《Coordinates for Instant Image Cloning》](https://www.cse.huji.ac.il/~danix/mvclone/)的描述,MVC融合算法修正值其实是一个线性区间,只要得到其中一些关键点的融合修正值,其他点的融合修正值就可以根据周围的融合修正值线性插值出来。 因此,可以通过CGAL来对ROI多边形边界构建一个自适应三角网,以边界上每个栅格点作为约束构网,为了满足Delaunay特性,就会在ROI内部新添加一些点,这样就会出现边界小而密集,边界大而稀疏的自适应三角网(可参看这篇文章[《通过CGAL将一个多边形剖分成Delaunay三角网》][netlink2]):
![imglink1]
这样,n个点就会将为常数级别个数c,也就是时间复杂度至少为O(cm)。当然从三角面上插值也会有时间消耗,但时间复杂度会明显小于计算均值坐标。 ## 2.2. 核心代码 具体核心代码实现如下(完整的代码实现地址见文章末尾): ```cpp //三角网优化 void QImageShowWidget::MVCBlendOptimize(int posX, int posY) { QTime startTime = QTime::currentTime(); //Step1:找到边界上所有的像素点 vector

加载全部内容

相关教程
猜你喜欢
用户评论