ios - 如何使用加速框架(vImage)缩放灰度图像

标签 ios objective-c image-processing accelerate-framework vimage

您好,我需要快速缩放灰度图像,所以我尝试了 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/

相关文章:

ios - 不同宽度的 UITableViewCell 自动布局

ios - 如何用新数据刷新 UItableViewcell

objective-c - 阅读另一个应用程序的首选项列表,或共享一些首选项?

matlab - 在 windows 中运行 STIP(时空兴趣点)的问题

image - MatLab - 使用 FFT 移动图像

java - 移动应用业务逻辑层策略

ios - 图像持久化和延迟加载与 Dispatch_Async 冲突

objective-c - 嵌套的 NSManagedObjectContext 保存和 objectID

c# - 如何将播放视频作为相机输入?

ios - UIInterfaceOrientation 信息.plist