2012-08-11 89 views
0

而不是逐行掃描像素, 我試圖從原點或圖像中的任意點掃描像素角度爲10',然後以10'爲單位遞增角度直到360',我想訪問在每個角落線下的像素,並做一些處理..掃描圖像像素

請幫助我如何訪問像素值位於特定的角度從原點或圖像中的任何點。

回答

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; 
     } 
    } 
} 
+0

非常感謝你..但我不熟悉java,你能幫我C嗎?還請幫助我包含頭文件。 – 2012-08-12 02:46:20

+0

用一些C代碼編輯我的答案。 – ekholm 2012-08-12 09:20:23

+0

非常感謝你... – 2012-08-12 13:20:15