簡體   English   中英

高斯模糊C#實現(類似於OpenCV)

[英]Gaussian blur C# implementation (similar to OpenCV)

我有一點問題。 我想在C#中實現高斯卷積,但它(出於某些目的)具有與EmguCV的高斯模糊相同的結果(這也意味着與OpenCV相同)。 在高斯卷積中核值的計算應始終相同,我唯一需要知道的是,OpenCV實現如何計算內核大小。 我已經仔細研究過OpenCV源代碼了,但是我對C ++的經驗很少,這就是為什么我沒有找到它。 也許其他任何人都可以幫助我。 OpenCV實現對“原始”有任何其他變化嗎?

高斯模糊是具有特定大小的高斯核的卷積(它是參數)。

所以卷積的步驟是:

make Gaussian kernel
convolve image

據我所知,如果內核大小超過預定義的閾值(我認為是7),OpenCV會使用一些優化。 然后,不在空間域中而是在頻域中執行卷積。

步驟是:

calculate result image size (needs to be power of 2 -> look at FFT)
transform image to frequency domain (e.g. FFT)
transform kernel to frequency domain (e.g. FFT)
multiply those matrices (element by element)
transform result matrix in spatial domain (e.g. inverse FFT)
clip matrix (convolution in frequency domain is cyclic convolution)

如果你只想看基本版本:AForge.NET庫中的GaussianBlur.cs類 (首先嘗試使用該類來查看符合您需求的文檔)doc:

http://www.aforgenet.com/framework/docs/html/f074e0dd-865c-fd5f-ba0a-80e336a0eaea.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM