24小时热门版块排行榜    

查看: 667  |  回复: 4

Tomy1078

金虫 (正式写手)

[求助] 圆内像素位置确定

我需要对一批院内图像进行统计,该圆被分成了7个区,需要分别对各个分区内的像素进行统计计算。
现在我的问题是我怎么才能准确快速的判断某个像素(x,y)是位于哪个分区里面。

分区.png



[ Last edited by Tomy1078 on 2013-3-22 at 10:56 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiaodancumt

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
应该根据像素点的坐标进行判定,首先你要知道区分这些区域的判据。就像简单的平面坐标系一样,只要你知道X和Y的符号,你就能知道这个点所在的象限。你这个也是一样,只要你根据这个区分函数进行判定,就可以得到所在的区域号。
2楼2013-03-22 15:15:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Tomy1078

金虫 (正式写手)

我是这么做的,将原坐标系转换成以圆的圆心(x0,y0)为原点的新的坐标系,再将该坐标系转换成极坐标系,通过半径半段是否在院内,如果在就判断是否在某个角度区内,在就判断是否为白点,是加1

    % 各区火焰像素总数初始值
     FA1=0;
     FA2=0;
     FA3=0;
     FA4=0;
     FA5=0;
     FA6=0;
     FA7=0;
     num=PixNum/7; % 每个分区内像素总数  
     % 将各分区独立存成文件,用
    for x=0:xmax
        for y=0:ymax
            if sqrt((x-x0)^2+(y-y0)^2)               %将原笛卡尔坐标转化为以圆心为坐标的笛卡尔坐标系
              m=x-x0;
              n=y-y0;
              % 将新的笛卡尔坐标系转化为极坐标系
             [THETA,RHO] = cart2pol(m,n);
                % 计算第1分区火焰区域像素总数
                if THETA>(A1st-Ab) && THETA<=A1st
                  if A4(x,y)==1
                    FA1=FA1+1;
                  end
                 % 计算第7分区火焰区域像素总数
                elseif THETA>A1st && THETA<=(A1st+Ab)
                  if A4(x,y)==1
                    FA7=FA(7)+1;
                  end
                 % 计算第6分区火焰区域像素总数
                elseif THETA>(A1st+Ab) && THETA<=(A1st+2*Ab)
                  if A4(x,y)==1
                    FA6=FA6+1;
                  end
                 % 计算第5分区火焰区域像素总数
                elseif THETA>(A1st+2*Ab) && THETA<=(A1st+3*Ab)
                  if A4(x,y)==1
                    FA5=FA5+1
                  end
                 % 计算第4分区火焰区域像素总数  
                elseif THETA>(A1st+3*Ab) && THETA<=(A1st+4*Ab)
                  if A4(x,y)==1
                    FA4=FA4+1;
                  end
                 % 计算第3分区火焰区域像素总数  
                elseif THETA>(A1st+4*Ab)&&THETA<=(A1st+5*Ab)
                  if A4(x,y)==1
                    FA3=FA3+1;
                  end
                 % 计算第2分区火焰区域像素总数   
                elseif THETA>(A1st+5*Ab) && THETA<=(A1st+6*Ab)
                  if A4(x,y)==1
                    FA2=FA2+1;
                  end   
                end  
            end
        end
    end
计算的结果是只有在1、6、7三个区域油数值,结果如下:
0        FA1        FA2        FA3        FA4        FA5        FA6        FA7
1        0        0        0        0        0        0        0
2        0        0        0        0        0        0.280234378        0
3        7.438948939        0        0        0        0        6.088728755        0.025475853
4        21.83280562        0        0        0        0        14.44480839        0.025475853
5        22.08756414        0        0        0        0        16.83953852        0.025475853
6        20.58448885        0        0        0        0        12.33031263        0.025475853
7        17.83309677        0        0        0        0        9.196782764        0.178330968
8        13.85886378        0        0        0        0        5.93587364        0.178330968
9        12.83982968        0        0        0        0        3.744950322        0.178330968
10        9.477017142        0        0        0        0        1.80878553        0.178330968
3楼2013-03-22 15:47:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百读童子

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
对呀,平移加极坐标就搞定了!
4楼2013-03-24 01:30:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Tomy1078

金虫 (正式写手)

但是结果是只有1、6、7三个区域有数值,但是实际是在7个区都应该有数据的。因为目标在7个区里面都有
5楼2013-03-24 16:37:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Tomy1078 的主题更新
信息提示
请填处理意见