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

简介

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

基础知识

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

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

FSR 可用于以下应用领域:

  1. **错误隐藏(修复)**:采样掩码指示要重建的失真输入图像的缺失像素。
  2. **非规则采样**:有关如何选择合适的采样掩码的更多信息,请参阅[111][110]

示例

以下示例代码演示了如何使用 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); // 只复制有效像素(即掩码中的非零像素)
// 重建失真图像
// 选择质量配置文件:快速 (xphoto::INPAINT_FSR_FAST) 或最佳 (xphoto::INPAINT_FSR_BEST)
Mat reconstructed;
xphoto::inpaint(im_distorted, mask, reconstructed, xphoto::INPAINT_FSR_FAST);
imshow("原始图像", original_);
imshow("失真图像", im_distorted);
imshow("重建图像", reconstructed);
waitKey();
return 0; 0;
}
n 维密集数组类
**定义:** mat.hpp:829
MatSize size
**定义:** mat.hpp:2177
void copyTo(OutputArray m) const
将矩阵复制到另一个矩阵。
int type() const
返回矩阵元素的类型。
@ INTER_NEAREST
**定义:** imgproc.hpp:250
int main(int argc, char *argv[])
**定义:** highgui_qt.cpp:3
**定义:** core.hpp:107

原始图像和失真图像:

重建结果:

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

附加资源

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