我在安卓设备上同时使用OpenCV和FastCV来执行一些图像处理操作。在对帧进行阈值处理后,在感兴趣的区域附近留下了一幅含有中等数量黑白噪声的二值图像。
执行侵蚀,然后对图像的膨胀给我一个几乎没有噪音的图像,可以用于进一步的处理,但上述两个库都有他们的缺点。
OpenCV
Mat element = getStructuringElement(MORPH_RECT, Size(2 * erosionSize + 1, 2 * erosionSize + 1), Point(erosionSize, erosionSize));
erode(in, in, element);
element.release();请原谅我的神奇数字,但我对OpenCV的腐蚀/扩展的简单调用如下所示。然后,我可以修改腐蚀尺寸/扩展尺寸参数,以调整功能在消除噪音方面的侵略性。问题出在哪里?在这里,性能是最重要的,而且这个函数运行得比我想要的要慢得多。
FastCV
fcvFilterErode3x3u8_v2 (const uint8_t *__restrict src, unsigned int srcWidth, unsigned int srcHeight, unsigned int srcStride, uint8_t *__restrict dst, unsigned int dstStride)上面的原型是FastCV的侵蚀实现,在那里没有参数来调整侵蚀的大小。考虑到FastCV已经为移动架构进行了优化,而且我怀疑它实际上使用了我正在测试的Galaxy中的GPU,这个功能比上面的要快得多。然而,我需要循环并多次运行在同一帧上,以达到相同程度的侵蚀,从而牺牲了过程中的任何性能效益。
是否有人知道:
发布于 2012-08-16 08:11:59
如果您的目的是系统地对这两种操作(侵蚀和膨胀)进行系统的处理,并且如果您对这两种操作都使用相同的参数大小,那么您可能想尝试使用opencv的专用函数来应用一个开口:
hats.html
从数学上讲,这相当于执行和侵蚀,然后是扩展,但开放的优化实现可以更快地完成这两个操作,通过先后应用这两个操作。
免责声明:我还没有检查opencv的那些操作的实现,但是如果您还没有这样做的话,您会想试一试。
https://stackoverflow.com/questions/11970093
复制相似问题