您好,我需要快速缩放灰度图像,所以我尝试了 vImage,但应用程序崩溃了,请帮忙。在下面的代码中,srcimg.data/dstimg.data是指向unsigned char图像数据(单 channel 仅灰度数据)。
vImage_Buffer src; src.data=srcimg.data; src.height=srcimg.cols; src.width=srcimg.rows; src.rowBytes=srcimg.cols; vImage_Buffer dest; dest.data=dstimg.data; dest.height=dstimg.cols; dest.width=dstimg.rows; dest.rowBytes=dstimg.cols; vImageScale_Planar8(&src, &dest, NULL, kvImageNoFlags);
最佳答案
对于 vImage/Geometry.h 中的重采样 API,我们选择使用矢量单元来提供更好的质量而不是更快的速度。这是因为向量单元通常不擅长在内存中进行分散访问,这很大程度上是您为一些简单的事情所做的事情,例如使用非单位步长的线性或最近邻重采样。他们似乎并不擅长使最近邻或线性过滤快速进行。因此,我们采用了 Lanczos 过滤,它会查看更大的连续像素区域来找出每个结果像素。它看起来棒极了(我认为),但要获得棒极了还需要更多的工作。
另外,如果您想要的是线性或最近邻过滤,那么 GPU 就有相应的硬件!
确实,vImage 中的一般 API 旨在为您提供比自行构建更快的结果。
关于ios - 如何使用加速框架(vImage)缩放灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11629823/