我試圖在圖像上應用8X8可分離平均濾鏡 該濾鏡是2D可分離的。sepFilter2D Opencv意外結果
我轉換從Matlab的下面的代碼,
內核=那些(N);
%對於沒有zeropadding的conv 2
LimgLarge = padarray(Limg,[n n],'circular');
LimgKer = conv2(LimgLarge,Kernel,'same')/(n^2);
LKerCorr = LimgKer(n + 1:end-n,n + 1:end-n);
1st我用過濾器尺寸填充圖像,而不是關聯2d,最後裁剪圖像區域。
現在,我想要實現在C同樣的事情++使用OpenCV的
我已加載的形象,不是叫下面的命令:
m_kernelSize = 8;
m_kernelX = Mat::ones(m_kernelSize,1,CV_32FC1);
m_kernelX = m_kernelX/m_kernelSize;
m_kernelY = Mat::ones(1,m_kernelSize,CV_32FC1);
m_kernelY = m_kernelY/m_kernelSize;
sepFilter2D(m_logImage,m_filteredImage,m_logImage.depth(),m_kernelX,m_kernelY,Point(-1,-1),0,BORDER_REPLICATE);
我預計將獲得相同的結果,但是我仍然從Matlab得到完全不同的結果。
我寧願不去填充圖像,進行關聯並最終裁剪圖像,我期望使用BORDER_REPLICATE參數得到相同的結果。
btw,我知道copyMakeBorder函數,而不是使用它,因爲sepFilter2D自己處理區域。
任何幫助將是非常讚賞
你能上傳原始圖像,matlab結果和OpenCV結果嗎? – scap3y
當然,但它需要我幾個小時,你可以使用任何虛擬形象代替 – TripleS
定義「不同的結果」 –