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

详细描述

函数

void cv::denoise_TVL1 (const std::vector< Mat > &observations, Mat &result, double lambda=1.0, int niters=30)
 原对偶算法(Primal-dual algorithm)是用于解决特殊变分问题(即找到一个函数来最小化某个泛函)的算法。由于图像去噪,特别是,可以被视为变分问题,因此原对偶算法可以用于执行去噪,这正是此处所实现的功能。
 
void cv::cuda::fastNlMeansDenoising (const GpuMat &src, GpuMat &dst, float h, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
 
void cv::cuda::fastNlMeansDenoising (InputArray src, OutputArray dst, float h, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
 使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。
 
void cv::fastNlMeansDenoising (InputArray src, OutputArray dst, const std::vector< float > &h, int templateWindowSize=7, int searchWindowSize=21, int normType=NORM_L2)
 使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。
 
void cv::fastNlMeansDenoising (InputArray src, OutputArray dst, float h=3, int templateWindowSize=7, int searchWindowSize=21)
 使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。
 
void cv::cuda::fastNlMeansDenoisingColored (const GpuMat &src, GpuMat &dst, float h_luminance, float photo_render, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
 
void cv::cuda::fastNlMeansDenoisingColored (InputArray src, OutputArray dst, float h_luminance, float photo_render, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
 fastNlMeansDenoising 函数用于彩色图像的修改版本。
 
void cv::fastNlMeansDenoisingColored (InputArray src, OutputArray dst, float h=3, float hColor=3, int templateWindowSize=7, int searchWindowSize=21)
 fastNlMeansDenoising 函数用于彩色图像的修改版本。
 
void cv::fastNlMeansDenoisingColoredMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h=3, float hColor=3, int templateWindowSize=7, int searchWindowSize=21)
 fastNlMeansDenoisingMulti 函数用于彩色图像序列的修改版本。
 
void cv::fastNlMeansDenoisingMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, const std::vector< float > &h, int templateWindowSize=7, int searchWindowSize=21, int normType=NORM_L2)
 fastNlMeansDenoising 函数用于在短时间内连续拍摄的图像序列的修改版本。例如视频。此版本的函数适用于灰度图像或手动操作色彩空间。更多详情请参见 [45](可在此公开访问)。
 
void cv::fastNlMeansDenoisingMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h=3, int templateWindowSize=7, int searchWindowSize=21)
 fastNlMeansDenoising 函数用于在短时间内连续拍摄的图像序列的修改版本。例如视频。此版本的函数适用于灰度图像或手动操作色彩空间。更多详情请参见 [45](可在此公开访问)。
 
void cv::cuda::nonLocalMeans (const GpuMat &src, GpuMat &dst, float h, int search_window=21, int block_size=7, int borderMode=BORDER_DEFAULT, Stream &stream=Stream::Null())
 
void cv::cuda::nonLocalMeans (InputArray src, OutputArray dst, float h, int search_window=21, int block_size=7, int borderMode=BORDER_DEFAULT, Stream &stream=Stream::Null())
 执行纯粹的非局部均值去噪,没有任何简化,因此速度不快。
 

函数文档

◆ denoise_TVL1()

void cv::denoise_TVL1 ( const std::vector< Mat > & observations,
Mat & result,
double lambda = 1.0,
int niters = 30 )
Python
cv.denoise_TVL1(observations, result[, lambda_[, niters]]) ->

#include <opencv2/photo.hpp>

原对偶算法(Primal-dual algorithm)是用于解决特殊变分问题(即找到一个函数来最小化某个泛函)的算法。由于图像去噪,特别是,可以被视为变分问题,因此原对偶算法可以用于执行去噪,这正是此处所实现的功能。

值得注意的是,此实现取自2013年7月的博客文章 [201],该文章还包含了(略微更通用)现成的Python源代码。随后,该代码于2013年7月底由Vadim Pisarevsky 使用OpenCV重写为C++,最终由后来的作者稍作修改。

尽管算法的彻底讨论和论证可以在 [50] 中找到,但在这里按照 [201] 浏览一下可能更有意义。首先,我们将1字节灰度图像视为像素矩形域上的函数(可以看作是对于某些 \(m,\;n\in\mathbb{N}\) 的集合 \(\left\{(x,y)\in\mathbb{N}\times\mathbb{N}\mid 1\leq x\leq n,\;1\leq y\leq m\right\}\) 到 \(\{0,1,\dots,255\}\))。我们将噪声图像表示为 \(f_i\),在此视图下,给定相同大小的图像 \(x\),我们可以通过以下公式衡量其“糟糕”程度:

\[\left\|\left\|\nabla x\right\|\right\| + \lambda\sum_i\left\|\left\|x-f_i\right\|\right\|\]

\(\|\|\cdot\|\|\) 在此处表示 \(L_2\)-范数。您可以看到,第一项表明我们希望图像是平滑的(理想情况下,梯度为零,从而保持常数),第二项表明我们希望结果接近我们获得的观测值。如果我们将 \(x\) 视为一个函数,这正是我们寻求最小化的泛函,而原对偶算法(Primal-Dual algorithm)便在此处发挥作用。

参数
observations此数组应包含要恢复图像的一个或多个带噪版本。
result去噪后的图像将存储在此处。无需预先分配存储空间,因为在必要时会自动分配。
lambda对应于上述公式中的 \(\lambda\)。当其增大时,平滑(模糊)图像比细节丰富(但可能噪声更多)的图像更受青睐。粗略地说,当它变小时,结果会更模糊,但更严重的离群值将被去除。
niters算法将运行的迭代次数。当然,迭代次数越多越好,但很难定量地完善这个说法,因此只需使用默认值,如果结果不佳则增加它。

◆ fastNlMeansDenoising() [1/4]

void cv::cuda::fastNlMeansDenoising ( const GpuMat & src,
GpuMat & dst,
float h,
int search_window = 21,
int block_size = 7,
Stream & stream = Stream::Null() )
inline
Python
cv.cuda.fastNlMeansDenoising(src, h[, dst[, search_window[, block_size[, stream]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

此函数的调用图如下

◆ fastNlMeansDenoising() [2/4]

void cv::cuda::fastNlMeansDenoising ( InputArray src,
OutputArray dst,
float h,
int search_window = 21,
int block_size = 7,
Stream & stream = Stream::Null() )
Python
cv.cuda.fastNlMeansDenoising(src, h[, dst[, search_window[, block_size[, stream]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。

参数
src输入8位1通道、2通道或3通道图像。
dst输出图像,其大小和类型与 src 相同。
h调节滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
search_window用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:search_window越大,去噪时间越长。推荐值21像素。
block_size用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
Stream 用于异步调用。

此函数预期应用于灰度图像。对于彩色图像,请查看 FastNonLocalMeansDenoising::labMethod。

另请参见
fastNlMeansDenoising

◆ fastNlMeansDenoising() [3/4]

void cv::fastNlMeansDenoising ( InputArray src,
OutputArray dst,
const std::vector< float > & h,
int templateWindowSize = 7,
int searchWindowSize = 21,
int normType = NORM_L2 )
Python
cv.fastNlMeansDenoising(src[, dst[, h[, templateWindowSize[, searchWindowSize]]]]) -> dst
cv.fastNlMeansDenoising(src, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]]) -> dst

#include <opencv2/photo.hpp>

使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。

参数
src输入8位或16位(仅适用于 NORM_L1)1通道、2通道、3通道或4通道图像。
dst输出图像,其大小和类型与 src 相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节滤镜强度的参数数组,可以是应用于所有通道的一个参数,也可以是dst中每个通道一个参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
normType用于权重计算的范数类型。可以是 NORM_L2 或 NORM_L1。

此函数预期应用于灰度图像。对于彩色图像,请查看 fastNlMeansDenoisingColored。此函数的高级用法可以是在不同色彩空间中手动去噪彩色图像。fastNlMeansDenoisingColored 通过将图像转换为 CIELAB 色彩空间,然后使用不同的h参数分别去噪L和AB分量来使用这种方法。

◆ fastNlMeansDenoising() [4/4]

void cv::fastNlMeansDenoising ( InputArray src,
OutputArray dst,
float h = 3,
int templateWindowSize = 7,
int searchWindowSize = 21 )
Python
cv.fastNlMeansDenoising(src[, dst[, h[, templateWindowSize[, searchWindowSize]]]]) -> dst
cv.fastNlMeansDenoising(src, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]]) -> dst

#include <opencv2/photo.hpp>

使用非局部均值去噪算法 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ 进行图像去噪,并带有一些计算优化。期望噪声为高斯白噪声。

参数
src输入8位1通道、2通道、3通道或4通道图像。
dst输出图像,其大小和类型与 src 相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。

此函数预期应用于灰度图像。对于彩色图像,请查看 fastNlMeansDenoisingColored。此函数的高级用法可以是在不同色彩空间中手动去噪彩色图像。fastNlMeansDenoisingColored 通过将图像转换为 CIELAB 色彩空间,然后使用不同的h参数分别去噪L和AB分量来使用这种方法。

◆ fastNlMeansDenoisingColored() [1/3]

void cv::cuda::fastNlMeansDenoisingColored ( const GpuMat & src,
GpuMat & dst,
float h_luminance,
float photo_render,
int search_window = 21,
int block_size = 7,
Stream & stream = Stream::Null() )
inline
Python
cv.cuda.fastNlMeansDenoisingColored(src, h_luminance, photo_render[, dst[, search_window[, block_size[, stream]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

此函数的调用图如下

◆ fastNlMeansDenoisingColored() [2/3]

void cv::cuda::fastNlMeansDenoisingColored ( InputArray src,
OutputArray dst,
float h_luminance,
float photo_render,
int search_window = 21,
int block_size = 7,
Stream & stream = Stream::Null() )
Python
cv.cuda.fastNlMeansDenoisingColored(src, h_luminance, photo_render[, dst[, search_window[, block_size[, stream]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

fastNlMeansDenoising 函数用于彩色图像的修改版本。

参数
src输入 8 位 3 通道图像。
dst输出图像,其大小和类型与 src 相同。
h_luminance调节滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
photo_renderfloat 与h相同,但用于颜色分量。对于大多数图像,值等于10足以去除彩色噪声且不扭曲颜色。
search_window用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:search_window越大,去噪时间越长。推荐值21像素。
block_size用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
Stream 用于异步调用。

该函数将图像转换为 CIELAB 色彩空间,然后使用 FastNonLocalMeansDenoising::simpleMethod 函数,并给定h参数,分别去噪 L 和 AB 分量。

另请参见
fastNlMeansDenoisingColored

◆ fastNlMeansDenoisingColored() [3/3]

void cv::fastNlMeansDenoisingColored ( InputArray src,
OutputArray dst,
float h = 3,
float hColor = 3,
int templateWindowSize = 7,
int searchWindowSize = 21 )
Python
cv.fastNlMeansDenoisingColored(src[, dst[, h[, hColor[, templateWindowSize[, searchWindowSize]]]]]) -> dst

#include <opencv2/photo.hpp>

fastNlMeansDenoising 函数用于彩色图像的修改版本。

参数
src输入 8 位 3 通道图像。
dst输出图像,其大小和类型与 src 相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节亮度分量滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
hColor与h相同,但用于颜色分量。对于大多数图像,值等于10足以去除彩色噪声且不扭曲颜色。

该函数将图像转换为 CIELAB 色彩空间,然后使用 fastNlMeansDenoising 函数,并给定h参数,分别去噪 L 和 AB 分量。

◆ fastNlMeansDenoisingColoredMulti()

void cv::fastNlMeansDenoisingColoredMulti ( InputArrayOfArrays srcImgs,
OutputArray dst,
int imgToDenoiseIndex,
int temporalWindowSize,
float h = 3,
float hColor = 3,
int templateWindowSize = 7,
int searchWindowSize = 21 )
Python
cv.fastNlMeansDenoisingColoredMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, hColor[, templateWindowSize[, searchWindowSize]]]]]) -> dst

#include <opencv2/photo.hpp>

fastNlMeansDenoisingMulti 函数用于彩色图像序列的修改版本。

参数
srcImgs输入8位3通道图像序列。所有图像应具有相同的类型和大小。
imgToDenoiseIndex要去噪的目标图像在 srcImgs 序列中的索引。
temporalWindowSize用于目标图像去噪的周围图像数量。应为奇数。将使用 srcImgs 中从 imgToDenoiseIndex - temporalWindowSize / 2 到 imgToDenoiseIndex + temporalWindowSize / 2 的图像来去噪 srcImgs[imgToDenoiseIndex] 图像。
dst输出图像,其大小和类型与 srcImgs 图像相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节亮度分量滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
hColor与h相同,但用于颜色分量。

该函数将图像转换为 CIELAB 色彩空间,然后使用 fastNlMeansDenoisingMulti 函数,并给定h参数,分别去噪 L 和 AB 分量。

◆ fastNlMeansDenoisingMulti() [1/2]

void cv::fastNlMeansDenoisingMulti ( InputArrayOfArrays srcImgs,
OutputArray dst,
int imgToDenoiseIndex,
int temporalWindowSize,
const std::vector< float > & h,
int templateWindowSize = 7,
int searchWindowSize = 21,
int normType = NORM_L2 )
Python
cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, templateWindowSize[, searchWindowSize]]]]) -> dst
cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]]) -> dst

#include <opencv2/photo.hpp>

fastNlMeansDenoising 函数用于在短时间内连续拍摄的图像序列的修改版本。例如视频。此版本的函数适用于灰度图像或手动操作色彩空间。更多详情请参见 [45](可在此公开访问)。

参数
srcImgs输入8位或16位(仅适用于 NORM_L1)1通道、2通道、3通道或4通道图像序列。所有图像应具有相同的类型和大小。
imgToDenoiseIndex要去噪的目标图像在 srcImgs 序列中的索引。
temporalWindowSize用于目标图像去噪的周围图像数量。应为奇数。将使用 srcImgs 中从 imgToDenoiseIndex - temporalWindowSize / 2 到 imgToDenoiseIndex + temporalWindowSize / 2 的图像来去噪 srcImgs[imgToDenoiseIndex] 图像。
dst输出图像,其大小和类型与 srcImgs 图像相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节滤镜强度的参数数组,可以是应用于所有通道的一个参数,也可以是dst中每个通道一个参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。
normType用于权重计算的范数类型。可以是 NORM_L2 或 NORM_L1。

◆ fastNlMeansDenoisingMulti() [2/2]

void cv::fastNlMeansDenoisingMulti ( InputArrayOfArrays srcImgs,
OutputArray dst,
int imgToDenoiseIndex,
int temporalWindowSize,
float h = 3,
int templateWindowSize = 7,
int searchWindowSize = 21 )
Python
cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, templateWindowSize[, searchWindowSize]]]]) -> dst
cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]]) -> dst

#include <opencv2/photo.hpp>

fastNlMeansDenoising 函数用于在短时间内连续拍摄的图像序列的修改版本。例如视频。此版本的函数适用于灰度图像或手动操作色彩空间。更多详情请参见 [45](可在此公开访问)。

参数
srcImgs输入8位1通道、2通道、3通道或4通道图像序列。所有图像应具有相同的类型和大小。
imgToDenoiseIndex要去噪的目标图像在 srcImgs 序列中的索引。
temporalWindowSize用于目标图像去噪的周围图像数量。应为奇数。将使用 srcImgs 中从 imgToDenoiseIndex - temporalWindowSize / 2 到 imgToDenoiseIndex + temporalWindowSize / 2 的图像来去噪 srcImgs[imgToDenoiseIndex] 图像。
dst输出图像,其大小和类型与 srcImgs 图像相同。
templateWindowSize用于计算权重的模板块大小(以像素为单位)。应为奇数。推荐值7像素。
searchWindowSize用于计算给定像素加权平均值的窗口大小(以像素为单位)。应为奇数。线性影响性能:searchWindowsSize 越大,去噪时间越长。推荐值21像素。
h调节滤镜强度的参数。较大的h值可以完美去除噪声,但也会去除图像细节;较小的h值保留细节,但也会保留一些噪声。

◆ nonLocalMeans() [1/2]

void cv::cuda::nonLocalMeans ( const GpuMat & src,
GpuMat & dst,
float h,
int search_window = 21,
int block_size = 7,
int borderMode = BORDER_DEFAULT,
Stream & stream = Stream::Null() )
inline
Python
cv.cuda.nonLocalMeans(src, h[, dst[, search_window[, block_size[, borderMode[, stream]]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

此函数的调用图如下

◆ nonLocalMeans() [2/2]

void cv::cuda::nonLocalMeans ( InputArray src,
OutputArray dst,
float h,
int search_window = 21,
int block_size = 7,
int borderMode = BORDER_DEFAULT,
Stream & stream = Stream::Null() )
Python
cv.cuda.nonLocalMeans(src, h[, dst[, search_window[, block_size[, borderMode[, stream]]]]]) -> dst

#include <opencv2/photo/cuda.hpp>

执行纯粹的非局部均值去噪,没有任何简化,因此速度不快。

参数
src源图像。仅支持 CV_8UC1、CV_8UC2 和 CV_8UC3。
dst目标图像。
h滤镜 sigma,调节颜色滤镜强度。
search_window搜索窗口的大小。
block_size用于计算权重的块大小。
borderMode边框类型。详情请参见 borderInterpolate。目前支持 BORDER_REFLECT101、BORDER_REPLICATE、BORDER_CONSTANT、BORDER_REFLECT 和 BORDER_WRAP。
Stream 用于异步版本。
另请参见
fastNlMeansDenoising