介绍
在本教程中,我们将展示如何使用快速频率选择重构 (FSR) 算法修复图像。
基础知识
图像修复是修复图像中损坏或缺失部分的过程。此过程通过替换失真像素与相邻像素类似的像素实现。有许多修复算法,针对此类替换使用不同的方法。
其中一种算法称为**快速频率选择重构 (FSR)**。FSR 通过利用以下特性修复图像信号:图像的小面积可以在傅立叶域中以稀疏形式表示。有关详情,请参阅 [104] 和 [236]。
FSR 可用于以下应用领域
- 错误隐藏(修复):采样掩码表示要修复的失真输入图像的缺失像素。
- 非规则采样:有关如何选择正确的采样掩码的详细信息,请查看 [112] 和 [111]。
示例
以下示例代码展示了如何使用 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("orignal image", original_);
imshow("distorted image", im_distorted);
imshow("reconstructed image", reconstructed);
waitKey();
return 0;
}
MatSize size
定义 mat.hpp:2160
void copyTo(OutputArray m) const
将矩阵复制到另一个矩阵。
int type() const
返回矩阵元素的类型。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
与磁盘上的文件关联的文件存储的“黑匣子”表示。
定义 core.hpp:102
原始和失真图像:
重建:
左图:快速质量方案(运行时间 8 秒)。右图:最佳质量方案(1 分钟 51 秒)。
其他资源
在 OpenCV 中将 FSR 与现有修复方法比较