<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 67  文章 - 79  trackbacks - 0
    <2008年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    相冊(cè)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    問(wèn)題是這樣的,有一組扇形位圖,求其中每一個(gè)扇形的圓心,半徑,圓心角
    位圖類(lèi)似以下:這是一副一般掃描儀輸出的結(jié)果

    首先是opencv 能幫我們做得,提取圖像邊緣 效果如圖:
    void getEdge(const IplImage* pImg,IplImage* pCannyImg,int pos){

        IplImage
    * pGray = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,1);
        cvCvtColor(pImg,pGray,CV_BGR2GRAY);

        cvSmooth(pGray,pCannyImg,CV_BLUR,
    3,3,0,0);
        cvNot(pGray,pCannyImg);
        cvCanny(pGray,pCannyImg,pos,pos
    *3,3);
        cvRelease(
    &pGray);
    }



    然后就要對(duì)邊緣分割來(lái)得到一個(gè)個(gè)扇形,因?yàn)檫@些扇形都是整齊排列的,所以不需要什么封閉軌跡檢查,直接根據(jù)點(diǎn)的坐標(biāo)的連續(xù)性就可以判定了。不妨設(shè)橫豎相差大于3個(gè)像素點(diǎn)為不同扇形的點(diǎn)。
     const int hgap=3;
        
    const int vgap=3;
        
    for(int row=0;row<edge->height;++row){
            
    for(int col=0;col<edge->width;++col){
                
    const uchar* value=(const uchar*)edge->imageData+row*edge->widthStep+col;

                
    if*value == 255){
                    
    // printf("%d,%d = %d\n",row,col,*value);
                    points.push_back(std::make_pair(col,row));
                }
            }
        }
        Points::const_iterator iter;
        Point prev
    =std::make_pair(0,0);

        
    for(iter=points.begin();iter!=points.end();++iter){
            
    if(iter->second-prev.second > vgap){
                Area area;
                areas.push_front(area);
            }
            areas[
    0].push_back(*iter);
            prev
    =*iter;
        }

        prev
    =std::make_pair(0,0);
        
    for(Areas::iterator iter= areas.begin();iter!=areas.end();++iter){
            std::sort(iter
    ->begin(),iter->end());
            
    for(Area::const_iterator iter2=iter->begin();iter2!=iter->end();++iter2){
                
    if((iter2->first-prev.first>hgap) || (iter2->first-prev.first<0)){
                    Area area;
                    result.push_front(area);
                }
                result[
    0].push_back(*iter2);
                prev
    =*iter2;
            }
        }

    這樣我們就得到了一組扇形的邊緣軌跡。因?yàn)檫@些軌跡是無(wú)序排列的,所以我們需要求出這個(gè)扇形的邊緣鏈碼,才能對(duì)軌跡進(jìn)行分析。
    又由于掃描得到的圖片有明顯失真,所以用一般的8領(lǐng)域并不能準(zhǔn)確得到鏈碼,我們需要更大的領(lǐng)域矩陣。
    求N階領(lǐng)域函數(shù):
    Points getNearPoints(const Point& point,int gap=1){
        std::set
    <Point> s_points;
        Points          points;
        
    int x(point.first),y(point.second);
        
    for(int i=gap;i>=-gap;--i){
            
    for(int j=gap;j>=-gap;--j){
                 s_points.insert(std::make_pair(x
    +i,y+j));
            }
        }

        
    for(std::set<Point>::const_iterator iter = s_points.begin();iter!=s_points.end();++iter){
            
    if(*iter!=point)
                points.push_back(
    *iter);
        }

        
    return points;
    }
    這里有一點(diǎn)算法優(yōu)化,因?yàn)榭梢员WC:扇形2條半徑中右邊的一條必定斜率為0,所以求出右邊半徑的2個(gè)斷點(diǎn)很簡(jiǎn)單。因?yàn)樾甭蕿?,即此區(qū)間上的微分為0,也即差分為0。所以半徑的右斷點(diǎn)和圓心為軌跡上最長(zhǎng)的差分為0區(qū)間的2個(gè)端點(diǎn)。
    有了圓心點(diǎn),再根據(jù)鏈碼 向下尋找,得到左邊半徑的軌跡:

    由于直線的二階導(dǎo)數(shù)為0 左端點(diǎn)即為以上軌跡中二階差分為0的最長(zhǎng)區(qū)間的左端點(diǎn)
    有了2條半徑的端點(diǎn),不難求得此扇形的圓心角。

    由于圓形角代表了每一個(gè)扇形紅色的分度值,所以可以將原圖修復(fù)如下:


    posted on 2008-11-28 15:27 zarra 閱讀(392) 評(píng)論(1)  編輯  收藏

    FeedBack:
    # re: 對(duì)于給定離散軌跡 擬合其中存在的直線方程的分析[未登錄](méi) 2008-12-02 15:10 apple
    好崇拜~~~~~~
    差分求導(dǎo)又是怎么弄的??您搞的東西越來(lái)越深?yuàn)W,越來(lái)越不懂!!!  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区二区在线免费观看| 最近免费中文字幕mv电影| 国产亚洲精品无码成人| 99久热只有精品视频免费观看17 | 亚洲最大的黄色网| 免费一级成人毛片| 97在线视频免费| 国产成人亚洲综合无| 久久亚洲精品无码AV红樱桃| 国产精品成人无码免费| 无码人妻AV免费一区二区三区| 亚洲一线产品二线产品| 亚洲高清专区日韩精品| 女人18毛片免费观看| 国产成人精品一区二区三区免费 | 亚洲视频免费观看| 美女被爆羞羞网站在免费观看| 亚洲视频一区调教| 免费人成视频x8x8入口| 久久精品免费全国观看国产| 久久久久久av无码免费看大片 | 久久亚洲中文无码咪咪爱| 亚洲av日韩av不卡在线观看| 日韩免费视频在线观看| 99视频在线精品免费| 青青青视频免费观看| 亚洲午夜福利在线视频| 亚洲图片在线观看| 中文字幕亚洲不卡在线亚瑟| 日韩高清在线免费观看| 亚洲免费在线视频播放| 曰批全过程免费视频在线观看无码| 亚洲日本在线电影| 亚洲国产美女精品久久久久| 亚洲美女又黄又爽在线观看| 亚洲av午夜精品一区二区三区| 在线播放免费播放av片| 57pao一国产成永久免费| 大地资源中文在线观看免费版| 美女视频黄频a免费| 亚洲精品无AMM毛片|