0

我不是逐行扫描像素,而是尝试从原点或图像中的任意点以 10' 的角度扫描像素,然后以 10' 的步长增加角度,直到 360',我想访问像素在每个角度落在线上并做一些处理..

请帮助我了解如何访问与原点或图像中任何点成特定角度的像素值。

4

1 回答 1

0

你可以做这样的事情(你没有指定语言,这是在java中):

bool[][] processedPixels = new bool[width][height]; // To avoid processing the same pixel twice

for(int deg = 0; deg < 360; deg+=10)
{
    double angle = Math.toRadians(deg);
    for(int r = 0; r < maxRadius; r++)
    {
        int x = originX + (int) Math.round(r * Math.cos(angle));
            int y = originY + (int) Math.round(r * Math.sin(angle));

        if(!processedPixels[x][y])
        {       
            processPixel(x,y);
            processedPixels[x][y] = true;
        }
    }
}

在 C 中,几乎相同,使用 math.h 进行三角函数和舍入:

include <math.h>
#define PI 3.14159 // use the accuracy you need
#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * PI)


int deg;
double rad;
int processedPixels[width][height] = {0};

for(deg = 0; deg < 360; deg+=10)
{
    int r;
    rad = DEGREES_TO_RADIANS(deg);
    for(r = 0; r < maxRadius; r++)
    {
        int x,y;
        x = originX + (int) round(r * cos(rad));
        y = originY + (int) round(r * sin(rad);

        if(processedPixels[x][y] == 0)
        {       
            processPixel(x,y);
            processedPixels[x][y] = 1;
        }
    }
}
于 2012-08-11T19:37:24.443 回答