好的,所以情况是我想创建一个表示位图图像像素的NxN矩阵。
然后,我想将属于特定区域的所有像素的值更改为常量值。
使用极坐标定义区域。
例如, 让矩阵表示2048x2048像素位图,并且该区域由25 <= r <200,0 <θ<π/ 4定义,并且我想将落在该区域中的所有那些点的值设置为某个常数,k(在别处定义)。
最好的方法是什么?
我应该查看Apple的任何库,例如vImage,还是部分Accelerate框架等
或者这是一个如此具体的东西,我将不得不手工解决它,遍历我的NxN矩阵中的每个像素,看看它是否位于感兴趣的区域?
似乎必须有一种更有效的方法来做,而不仅仅是对几个for循环进行硬编码。特别是如果该区域有一些任意的定义,比如用户绘制的波浪形循环。
么?
答案 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;
}
}
并将该数组传递给上面的函数。