OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
图像修复

简介

在本教程中,我们将展示如何使用快速频率选择重建 (FSR) 算法进行图像修复。

基础知识

图像修复是重建图像中损坏或缺失部分的过程。这是通过用与相邻像素相似的像素替换扭曲的像素来实现的。有几种图像修复算法,使用不同的方法进行此类替换。

其中一种算法称为快速频率选择重建 (FSR)。 FSR 通过利用图像的小区域可以在傅里叶域中稀疏表示的特性来重建图像信号。有关详细信息,请参见[105][240]

FSR 可用于以下应用领域

  1. 错误隐藏(修复):采样掩码指示要重建的扭曲输入图像的缺失像素。
  2. 非规则采样:有关如何选择好的采样掩码的更多信息,请查看[114][113]

示例

以下示例代码显示了如何使用 FSR 进行修复。错误掩码的非零像素指示有效的图像区域,而零像素指示要重建的区域。您可以使用 Paint 或 GIMP 等工具手动创建任意掩码。首先使用纯白色图像,并用黑色绘制一些失真。

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv)
{
// 读取图像和错误模式
Mat original_, mask_;
original_ = imread("images/kodim22.png");
mask_ = imread("images/pattern_random.png", IMREAD_GRAYSCALE);
// 确保掩码和源图像具有相同的大小
Mat mask;
resize(mask_, mask, original_.size(), 0.0, 0.0, cv::INTER_NEAREST);
// 扭曲图像
Mat im_distorted(original_.size(), original_.type(), Scalar::all(0));
original_.copyTo(im_distorted, mask); // 仅复制有效像素(即掩码中的非零像素)
// 重建扭曲的图像
// 选择质量配置文件 fast (xphoto::INPAINT_FSR_FAST) 或 best (xphoto::INPAINT_FSR_BEST)
Mat reconstructed;
xphoto::inpaint(im_distorted, mask, reconstructed, xphoto::INPAINT_FSR_FAST);
imshow("原始图像", original_);
imshow("扭曲的图像", im_distorted);
imshow("重建的图像", reconstructed);
cv::Mat::empty
return 0;
}
n 维密集数组类
定义 mat.hpp:830
MatSize size
定义 mat.hpp:2187
void copyTo(OutputArray m) const
将矩阵复制到另一个矩阵。
int type() const
返回矩阵元素的类型。
@ INTER_NEAREST
定义 imgproc.hpp:251
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 core.hpp:107

原始图像和扭曲的图像:

重建:

左图:快速质量配置文件(运行时间 8 秒)。右图:最佳质量配置文件(1 分 51 秒)。

其他资源

FSR 与 OpenCV 中现有修复方法的比较