iOS将极坐标中定义的区域转换为NxN矩阵

时间:2013-01-28 13:29:41

标签: ios image math matrix

好的,所以情况是我想创建一个表示位图图像像素的NxN矩阵。
然后,我想将属于特定区域的所有像素的值更改为常量值。

使用极坐标定义区域。

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

最好的方法是什么?
我应该查看Apple的任何库,例如vImage,还是部分Accelerate框架等 或者这是一个如此具体的东西,我将不得不手工解决它,遍历我的NxN矩阵中的每个像素,看看它是否位于感兴趣的区域?

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

么?

1 个答案:

答案 0 :(得分:1)

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

在您的情况下,我建议vImage Framework使用lookup tables进行图像转换的vImageTableLookUp_ *函数。

例如,如果 red 值从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;
    }
}

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