我试图在图像上应用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
定义“不同的结果” –