0

好的,所以情况是我想创建一个表示位图图像像素的 NxN 矩阵。
然后,我想将落在某个区域的所有像素的值更改为恒定值。

该区域使用极坐标定义。

例如,让矩阵表示一个 2048x2048 像素的位图,区域由 25<=r<200, 0<=theta<π/4 定义,我想设置所有落在该区域内的点的值到某个常数 k(在别处定义)。

解决这个问题的最佳方法是什么?
我是否应该查看 Apple 的任何库,例如 vImage 或 Accelerate 框架的部分等,
或者这是否太具体以至于我必须手动处理它,检查我的 NxN 矩阵中的每个像素以查看是否它位于感兴趣的区域?

似乎必须有一种比硬编码几个 for 循环更有效的方法。特别是如果该区域有一些任意定义,比如用户绘制的波浪形循环。

建议?

4

1 回答 1

1

Accelerate Framework 提供了许多处理图像的功能。

在您的情况下,我推荐vImage Framework ,它具有使用查找表进行图像转换的 vImageTableLookUp_* 函数。

例如,如果从 25 到 200 的红色值应该是常数,则创建一个数组

int red[256];
for (int i = 0; i < 256; i++) {
    if (i >= 25 && i < 200) {
        red[i] = MY_CONSTANT_VALUE;
    } else {
        red[i] = i;
    }
}

并将该数组传递给上面的函数。

于 2013-01-29T15:24:42.407 回答