全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1230
推到 Plurk!
推到 Facebook!

[問題]請問區域成長法RegionGrowing

尚未結案
Jeamsok
一般會員


發表:1
回覆:1
積分:0
註冊:2005-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-26 23:47:53 IP:59.120.xxx.xxx 未訂閱
各位大大您好 :    小弟程式粗淺 也是BCB的新手 但是雖知道了RegionGrowing的方法 但是實際上還是很無力    我是想將圖中的顏色找出區分的區域 來做是否超出邊線的 方法 ~ 但是 卻蠻令人困擾的 所以在此請教各位大大該怎麼解決或有參考範例幫助 不希望在面對螢幕做無力的發呆了 謝謝各位大大 懇請賜教 發表人 -
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-27 00:03:11 IP:218.168.xxx.xxx 未訂閱
您好: 您可以先搜尋相關文章,有問題再提出
Jeamsok
一般會員


發表:1
回覆:1
積分:0
註冊:2005-07-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-01 00:10:42 IP:59.120.xxx.xxx 未訂閱
各位大大您好:我想在一張已經灰階的圖中利用mousedowncheck取值之後再利用一個button做執行  
 
 void __fastcall TForm1::search(int L ,int X, int Y){        int H = Image1->Picture->Height;
    int W = Image1->Picture->Width;        int temp = 5;    // 與取得的值之差值 令其為 5
     //int   f = Edit1 ->Text.ToInt();       int   left =  GetRValue(Image1->Canvas->Pixels[X-1][Y]) ;
   int   right=  GetRValue(Image1->Canvas->Pixels[X 1][Y]) ;
   int   up   =  GetRValue(Image1->Canvas->Pixels[X][Y-1]) ;
   int   down =  GetRValue(Image1->Canvas->Pixels[X][Y 1]) ;
           //在MouseDownCheck得值 後利用所給的temp中的值 在其左右上下的pixel之差在temp之內的話
           //則其上下左右 的pixel值便被 原Pixels[x][y] 值 給取代
   if (X > W || Y >H ){ return ;}
   if (temp> L)
       {     //取該點pixel值 小於 差值
           if(0< left < (temp L)) {  Image2->Canvas->Pixels[X-1][Y] = (TColor)RGB(L,L,L); }
           if(0< right< (temp L)) {  Image2->Canvas->Pixels[X-1][Y] = (TColor)RGB(L,L,L); }
           if(0< up   < (temp L)) {  Image2->Canvas->Pixels[X][Y-1] = (TColor)RGB(L,L,L); }
           if(0< down < (temp L)) {  Image2->Canvas->Pixels[X][Y 1] = (TColor)RGB(L,L,L); }
        search(L,X-1,Y);
        search(L,X 1,Y);
        search(L,X,Y-1);
        search(L,X,Y 1);           }
   else{
           if((L-temp)< left < (temp L)) {  Image2->Canvas->Pixels[X-1][Y] = (TColor)RGB(L,L,L); }
           if((L-temp)< right< (temp L)) {  Image2->Canvas->Pixels[X-1][Y] = (TColor)RGB(L,L,L); }
           if((L-temp)< up   < (temp L)) {  Image2->Canvas->Pixels[X][Y-1] = (TColor)RGB(L,L,L); }
           if((L-temp)< down < (temp L)) {  Image2->Canvas->Pixels[X][Y 1] = (TColor)RGB(L,L,L); }
        search(L,X-1,Y);
        search(L,X 1,Y);
        search(L,X,Y-1);
        search(L,X,Y 1);
       }
 }    void __fastcall TForm1::RGClick(TObject *Sender)
{
   search( L ,X,  Y) ;
}
  
void __fastcall TForm1::Imagemousedown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int  tmp_X,  int  tmp_Y)
{
    int tmp_L = GetRValue(Image1->Canvas->Pixels[X][Y]);
     X = tmp_X;
     Y = tmp_Y;
     L = tmp_L;
 //X,Y,L 是全域變數
}    
1.不知道這樣做可以嗎??區域成長法是這樣做的嗎?總覺得怪怪 2.有overflow的問題 發表人 - jeamsok 於 2005/08/01 00:12:23 發表人 - jeamsok 於 2005/08/01 00:15:45
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-01 01:24:52 IP:218.168.xxx.xxx 未訂閱
引言: 1.不知道這樣做可以嗎??區域成長法是這樣做的嗎?總覺得怪怪 能否描述一下哪裡怪呢?我記得站上有程式碼可以參考 2.有overflow的問題 站上也有相關的討論與解決的方式
順心
系統時間:2024-04-26 17:31:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!