【发布时间】:2016-09-10 15:29:18
【问题描述】:
我正在 OpenCV 中设计形态学运算。我试图模仿 Matlab 的 bwmorph 中的函数 remove 和 bridge。为此,我参考了 bwmorph.m 的函数定义,在那里我获得了用于删除和桥接的查找表数组。
在这一步之后,Matlab 和 OpenCV 的过程是相同的。
lut(img,lutarray,img)
问题是 Matlab 使用 512 元素(9bit)查找表方案,而 OpenCV 使用 256 元素(8bit)查找方案,我如何在 OpenCV 中使用 Matlab lutarray?
在做了一些研究之后,我遇到了this post。
当他们说他们将图像从 0 到 512 “拆分”然后分成两部分时,他们是什么意思?
上述方法是否正确?有没有其他方法可以做到这一点?
【问题讨论】:
-
没有人吗?我认为这个人的意思是他正在对大小为 512 箱 (??) 的直方图的前半部分 (0-255) 和后半部分 (256-511) 应用这些操作,但这又是我的猜想,我可能完全偏离轨道。尝试联系那个人(sonmi),但它直接进入邮件列表@yahoogroups。谁能帮我这个?如何在 openCV 中使用 Matlab lutarray 处理二进制图像?
-
请不要在这里破坏您自己的帖子。我们希望每个提出好问题的人都能得到答案,但由于这里 99% 的人都是志愿者,我们无法保证。
-
bwlookup(BW,lut)或applylut对二进制或灰度图像 BW 执行 2×2 或 3×3 非线性邻域滤波操作,其中cv::LUT是每像素查找表手术。所以是的,你可以分割图像来执行后者,但首先提到的是,bwmorph.m 中的bw = applylut(bw, lut)无法使用cv::LUT或其他常用 OpenCV 函数复制。 -
没有。
cv::LUT不是邻域运算,而是所有 (x,y) 的 B(x,y) bwmorphs 删除图像减去星形内核的侵蚀。桥接需要更多的努力。 -
@halfer 抱歉,如果您觉得我忽略了您。我觉得如果我回复你,你可能会认为我在和你吵架,这根本不是我的本意。但是感谢您清理帖子以及您所做的一切。
标签: c++ opencv image-processing lookup-tables image-morphology