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