線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1023
推到 Plurk!
推到 Facebook!

如何偵測彩色小方格

尚未結案
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-17 08:07:17 IP:211.22.xxx.xxx 未訂閱
各位高手你們好: 今天小弟遇到一個問題,因為我的CCD要拍攝的大小有五公尺*十公尺,拍起來的彩色方格大概只有我上傳的圖片這麼大,甚至更小,我在這要如何判斷他的位址。謝謝解惑
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-17 08:09:04 IP:211.22.xxx.xxx 未訂閱
引言: 各位高手你們好: 今天小弟遇到一個問題,因為我的CCD要拍攝的大小有五公尺*十公尺,拍起來的彩色方格大概只有我上傳的圖片這麼大,甚至更小,我在這要如何判斷他的位址。謝謝解惑
taishyang
站務副站長


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-17 10:18:06 IP:210.68.xxx.xxx 未訂閱
您好: 您大概需要做以下的處理 1.影像前處理 Ex.濾波(去雜訊) 2.影像轉換到其他space,例如HSI等將亮度獨立出來的色彩空間(避免被光線影響) 3.找出您彩色方格的H及S範圍,便可偵測出彩色方格 4.定位的話常用的就是Connect Component  5.理論基礎在博碩士論文裡都可以查詢的到    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-17 17:42:08 IP:203.68.xxx.xxx 未訂閱
你好: 第二‧三個步驟我不太清楚如何處裡,可以有範例看一下嗎?? 謝謝解惑
taishyang
站務副站長


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-17 18:14:22 IP:210.68.xxx.xxx 未訂閱
您好:
引言:第二‧三個步驟我不太清楚如何處裡,可以有範例看一下嗎??
站上已有相當多範例囉,請多多利用搜尋功能< > 順心< >
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-18 18:42:28 IP:211.22.xxx.xxx 未訂閱
你好:   我已經將圖片處理成這樣,現在我要如何去判斷圖片中的色值。   感謝高手們的解答。                    
引言: 您好:
引言:第二‧三個步驟我不太清楚如何處裡,可以有範例看一下嗎??
站上已有相當多範例囉,請多多利用搜尋功能< > 順心< >
taishyang
站務副站長


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-21 09:25:12 IP:210.68.xxx.xxx 未訂閱
您好:
引言:我已經將圖片處理成這樣,現在我要如何去判斷圖片中的色值。
您可以先用TImage載入圖片,然後在OnMouseDown中取得Cr, Cb的大概範圍 (取得Cr, Cb範圍的程式碼需自行撰寫),得知範圍後便可利用此條件將您要取出的物件過濾出來 順心
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-21 16:35:43 IP:203.68.xxx.xxx 未訂閱
引言: 您好:
引言:我已經將圖片處理成這樣,現在我要如何去判斷圖片中的色值。
您可以先用TImage載入圖片,然後在OnMouseDown中取得Cr, Cb的大概範圍 (取得Cr, Cb範圍的程式碼需自行撰寫),得知範圍後便可利用此條件將您要取出的物件過濾出來 順心 < face="Verdana, Arial, Helvetica">
if (Image1->Picture->Bitmap->Empty==true)
  ShowMessage("請載入圖檔!!");
 Graphics::TBitmap* BMP=new Graphics::TBitmap();
 BMP->Assign(Image1->Picture->Bitmap );
 Byte* ptr=NULL;
 for (int y=0;yHeight ;y  )
 {
  ptr=(Byte*)BMP->ScanLine[y];
  for (int x=0;xWidth ;x  )
  {
   int RValue=255-ptr[x*3 2];
   int GValue=255-ptr[x*3 1];
   int BValue=255-ptr[x*3];
   ptr[x*3 2]=RValue;
   ptr[x*3 1]=GValue;
   ptr[x*3]  =BValue;
  }
 }
 Image2->Picture->Assign(BMP);
 delete BMP; 
您好: 請教一下,上面的CODE轉換的格式是YCrCb嗎?我該如何去取圖片中的色彩值 謝謝高手解惑。
taishyang
站務副站長


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-21 17:12:21 IP:210.68.xxx.xxx 未訂閱
您好:    您的程式碼是底片效果,並不是HSI或是YCrCb的轉換程式    順心
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-21 21:31:18 IP:203.68.xxx.xxx 未訂閱
您好:    請教一下,我現在做了HISTOGRAM但沒辦法二值化,能否請高手指點一下。        [/quote] 
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  ImageBulkIn->Picture->Bitmap->PixelFormat = pf32bit;
  ImageH = ImageBulkIn->Picture->Bitmap->Height;
  ImageW = ImageBulkIn->Picture->Bitmap->Width;
  Data = (RGBA**)new RGBA*[ImageH];
  tempData = (RGBA**)new RGBA*[ImageH];        for(int x=0;xPicture->Bitmap->ScanLine[x],sizeof(RGBA)*ImageW);
      memcpy(tempData[x],ImageBulkIn->Picture->Bitmap->ScanLine[x],sizeof(RGBA)*ImageW);
    }
  //ImageBulkIn->Picture->Bitmap->Width =  ImageW;
  //ImageBulkIn->Picture->Bitmap->Height = ImageH;      //ImageBulkIn->Left = ImageBulkIn->Left   ImageBulkIn->Width   20;     // ImageBulkIn->Visible = false;
  //ImageBulkIn->ProgressBar1->Max = ImageW*ImageH;    //  ImageBulkIn->Visible = true;      RGBA** Histogramdata=(RGBA**)new RGBA*[ImageH];
  for (int y=0; yCanvas->Pixels[j][i]=(TColor)RGB(Histogramdata[i][j].R,Histogramdata[i][j].G,Histogramdata[i][j].B);
  //釋放Histogramdata記憶體
  for (int y=0; y     
        
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-02-21 21:55:36 IP:203.68.xxx.xxx 未訂閱
您好:    底下是我二值化的程式,再加上上面的程式未何不能二值化 [/quote] 
 Graphics::TBitmap* BMP = new Graphics::TBitmap();
  //BMP->Assign(ImageBulkIn->Picture->Bitmap);
  //Image3->Picture->Bitmap->PixelFormat = pf24bit;
  BMP->Assign(Image3->Picture->Bitmap);
  //BMP->PixelFormat = pf24bit;
  Byte* ptr = NULL;
  pixel_no = 0;
  int R, G, B;
  R = StrToInt(Edit6->Text);
  G = StrToInt(Edit7->Text);
  B = StrToInt(Edit8->Text);
  for(int y = 0; yHeight ; y  )
  {
    ptr = (Byte*)BMP->ScanLine[y];
    for(int x = 0; xWidth ; x  )
    {
      //if(ptr[x*3 2]==255&&ptr[x*3 1]==0&&ptr[x*3]==0)
      if(ptr[x*3 2] >= (R-20) && ptr[x*3 2] <= (R 20))
      {
        if(ptr[x*3 1] >= (G-15) && ptr[x*3 1] <= (G 15))
        {
          if(ptr[x*3] >= (B-15) && ptr[x*3] <= (B 15))
          {
           ptr[x*3]=ptr[x*3 1]=ptr[x*3 2]=255;
           pixel_no  ;
          }
        }
      }
      else
      {
      ptr[x*3]=ptr[x*3 1]=ptr[x*3 2]=0;
      }
    }      } 
系統時間:2024-05-17 12:21:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!