【问题标题】:scanning of image pixels图像像素扫描
【发布时间】:2012-08-11 16:11:30
【问题描述】:

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

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

【问题讨论】:

    标签: image pixel scanning


    【解决方案1】:

    你可以这样做(你没有指定语言,这是在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;
            }
        }
    }
    

    【讨论】:

    • 非常感谢......但我不熟悉java,你能在C语言中帮助我吗?还请帮助我包含要包含的头文件。
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2011-05-08
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多