image - 为图片中的孔插入 RGB 值

标签 image algorithm

我们正在做一个名为“面部替换系统”的图像处理项目,我们指的是 http://thesai.org/Downloads/Volume1No6/Paper_22_A_Face_Replacement_System_Based_on_Face_Pose_Estimation.pdf .

我们实现了“图像变形”,其中源图像(面部)(用于替换目标图像)被移动、旋转和缩放以匹配目标图像(面部)的姿势。图像扭曲后得到的结果有漏洞,即目标图像的所有像素都没有映射到源图像。论文没有提及任何解决方案。

我们尝试了一个简单的解决方案:对每个孔的 8 个相连邻居的像素取平均值。我们也尝试了其他算法。但效果很差。

在这种情况下实现的最佳算法是什么?

最佳答案

您正在使用仿射变换(“移位、旋转和缩放”),因此可以计算反变换,并进行“反向映射”-为每个目标像素找到对应的源像素。因此完全消除了孔的出现。

编辑:评论讨论的双线性插值

foreach pixel in newimage do
   (px, py) = Transform(pixel.x, pixel.y) //float
    x = Floor(px), y = Floor(py)  //integer base coordinates in old image, rounded to -Infinity
    tx = px - x, ty = py - y   //float parametric coordinates in old image cell
    Coeff00 = (1 - tx) * (1 - ty)
    Coeff01 = tx * (1 - ty) 
    Coeff10 = (1 - tx) * ty
    Coeff11 = tx * ty
    NewRedValue = OldRedValue[x, y] * Coeff00 + 
                  OldRedValue[x + 1, y] * Coeff01 + 
                  OldRedValue[x, y + 1] * Coeff10 + 
                  OldRedValue[x + 1, y + 1] * Coeff11
    the same for blue, green  

关于image - 为图片中的孔插入 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747791/

相关文章:

java - 是否可以判断图像质量,即 Java 中的 dpi?

javascript - 转换为文件对象时的 Base64 图像有一个奇怪的名字

php - 单击按钮时的随机图像

java - 从 Image 对象在浏览器中创建图像

c - 添加第一个学生的记录后它停止工作并且不会将数据保存在文件中

algorithm - 如何减少这种 BinPack 算法? (它可能被称为 MinBreak-BinFill 之类的东西。)

algorithm - 为什么个人可能使用不止一种数据结构来组织相同的数据集

c - 如何在 OpenGL 中使用嵌套循环用较小的正方形列表填充平面?

javascript - 将图像放入使用 jsReport 生成的 pdf 中

algorithm - 搜索排序数组的最快搜索算法