【发布时间】:2012-03-20 17:26:21
【问题描述】:
我想做:
masked = image - mask
但我想“取代”mask。即垂直和水平移动它(只要它与image的交集不为空,这将是有效的)。
我有一些手工编码的程序集(它使用 MMX 指令),它嵌入在 C++ 程序中,但是在进行垂直位移时它不稳定,所以我想改用 OpenCV。是否可以仅调用一个 OpenCV 函数来执行此操作?
性能至关重要;使用 OpenCV,时间至少应该和汇编代码在一个数量级。
编辑:这是一个例子
image(中框,看那家伙头骨的对比):
mask(第一帧,无对比):
image - mask,没有位移。请注意对比路径是如何增强的,但由于患者移动了一点,我们可以看到一些颅骨轮廓,这些轮廓是用于诊断目的的视觉噪声。
image - mask,蒙版向下移动了大约 5 个像素。为了尝试补偿患者运动引入的噪音,我们稍微“移位”了遮罩,以便去除轮廓并更好地查看对比度路径(亮度和对比度进行了调整,这就是它看起来有点暗的原因)。
编辑 2:关于算法,我设法解决了它的问题。它不再崩溃,但缺点是它现在处理所有图像像素(它应该只处理那些需要减去的像素)。无论如何,如何修复旧代码不是我的问题;我的问题是,如何使用 OpenCV 进行此处理?稍后我会发布一些分析结果。
【问题讨论】:
-
您能否用更多项目更新您的答案: 1. 带有“移位”几个掩码的示例输入图像(即,给定输入的预期输出)。 2. 可能是您正在做的示例代码或伪代码。 3. 你的置换算法目前在给定的图像尺寸和硬件上运行的速度有多快。
-
这不是related to this thread,是吗?
-
@karlphillip:不,那个线程正在谈论不同的效果,这似乎比我的更复杂,顺便说一句。看我的例子。
-
@mevatron:完成。稍后我会发布一些分析结果。
-
+1 有趣的图片。
标签: c++ windows image-processing opencv