简介
在本教程中,我们将展示如何使用快速频率选择重建 (FSR) 算法进行图像修复。
基础知识
图像修复是重建图像中损坏或缺失部分的过程。这是通过用与相邻像素相似的像素替换扭曲的像素来实现的。有几种图像修复算法,使用不同的方法进行此类替换。
其中一种算法称为快速频率选择重建 (FSR)。 FSR 通过利用图像的小区域可以在傅里叶域中稀疏表示的特性来重建图像信号。有关详细信息,请参见[105]和[240]。
FSR 可用于以下应用领域
- 错误隐藏(修复):采样掩码指示要重建的扭曲输入图像的缺失像素。
- 非规则采样:有关如何选择好的采样掩码的更多信息,请查看[114]和[113]。
示例
以下示例代码显示了如何使用 FSR 进行修复。错误掩码的非零像素指示有效的图像区域,而零像素指示要重建的区域。您可以使用 Paint 或 GIMP 等工具手动创建任意掩码。首先使用纯白色图像,并用黑色绘制一些失真。
#include <opencv2/opencv.hpp>
#include <iostream>
int main(
int argc,
char** argv)
{
original_ = imread("images/kodim22.png");
mask_ = imread("images/pattern_random.png", IMREAD_GRAYSCALE);
Mat im_distorted(original_.
size(), original_.
type(), Scalar::all(0));
original_.
copyTo(im_distorted, mask);
xphoto::inpaint(im_distorted, mask, reconstructed, xphoto::INPAINT_FSR_FAST);
imshow("原始图像", original_);
imshow("扭曲的图像", im_distorted);
imshow("重建的图像", reconstructed);
cv::Mat::empty
return 0;
}
MatSize size
定义 mat.hpp:2187
void copyTo(OutputArray m) const
将矩阵复制到另一个矩阵。
int type() const
返回矩阵元素的类型。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
原始图像和扭曲的图像:
重建:
左图:快速质量配置文件(运行时间 8 秒)。右图:最佳质量配置文件(1 分 51 秒)。
其他资源
FSR 与 OpenCV 中现有修复方法的比较