- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在安卓设备上同时使用 OpenCV 和 FastCV 来执行一些图像处理操作。对帧进行阈值处理后,我得到了一张二值图像,在感兴趣区域附近存在适量的黑白噪声。
对图像进行腐 eclipse ,然后进行膨胀,可以得到几乎无噪声的图像,可用于进一步处理,但是上述两个库都有缺点。
OpenCV
Mat element = getStructuringElement(MORPH_RECT, Size(2 * erosionSize + 1, 2 * erosionSize + 1), Point(erosionSize, erosionSize));
erode(in, in, element);
element.release();
请原谅我的神奇数字,但我对 OpenCV 的侵 eclipse /扩张的简单调用看起来像上面这样。然后我可以修改它的 erosionSize/dilationSize 参数,以调整函数在消除噪声方面的积极程度。问题?性能在这里是重中之重,这个函数的运行速度比我希望的要慢。
快速CV
fcvFilterErode3x3u8_v2 (const uint8_t *__restrict src, unsigned int srcWidth, unsigned int srcHeight, unsigned int srcStride, uint8_t *__restrict dst, unsigned int dstStride)
上面的prototpye是FastCV的侵 eclipse 实现,这里没有调整侵 eclipse 大小的参数。鉴于 FastCV 已针对移动架构进行了优化,并且我怀疑它实际上利用了我用于测试的 Galaxy Nexus 中的 GPU,因此此功能比上述功能快得多。但是,我需要多次循环并在同一帧上运行它以实现相同级别的侵 eclipse ,从而牺牲过程中的任何性能优势。
有没有人知道:
最佳答案
如果您的意图是系统地连续执行这两种操作(侵 eclipse 和膨胀),并且您可以为两者使用相同的参数大小,那么您可能想尝试使用 opencv 的专用函数应用一个开口:
http://docs.opencv.org/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html
从数学上讲,这相当于执行和腐 eclipse ,然后是膨胀,但是有优化的开运算实现可以通过连续应用这两个操作来更快地完成运算。
免责声明:我还没有检查 opencv 对这些操作的实现,但你会想试一试——当然,如果你还没有做过的话。
关于c++ - FastCV 腐 eclipse /扩张参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970093/
所以通常情况下,最小/最大过滤器是通过使用四个 for 循环实现的,效率非常低。 for( index1 val) ? pixel : val; // max }
Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。 2
我有一个函数通过假设 anchor 是左上角或矩阵的第一个元素来执行膨胀/腐 eclipse 函数。 [1 1 1] [1 1 1] [1 1 1] 我有其他函数通过假设 anchor 是矩阵的中点来
我想平滑二值化图像的轮廓,认为腐 eclipse 是最好的方法。我知道正常的工作方式是使用 cvDilate(src, dst, 0, iter);其中 0 是 3x3 矩阵。 问题是 3x3 矩阵在
书中指出,在图像处理中,膨胀用于“加厚”二值图像中的对象。此外,作者在示例中使用了 imdilate 来修复或加粗扫描文档中的损坏文本。 imdilate 填补了扫描质量不佳的文本文档中的空白和裂缝。
我是一名优秀的程序员,十分优秀!