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

二直化後的圖片,怎麼算中/重心。

答題得分者是:taishyang
阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-05 09:59:52 IP:122.116.xxx.xxx 訂閱
前輩好,

我有一個想法,我把一張圖二直化之後,我想要算出他的中心
圖是一張不規則的多邊形,我想應該是
先算出他的左方、上方,求出他的左上角,
在算出他的右方、下方,求出他的右下角,
兩條對角線交叉,這個應該就是他的中心/重心,

這樣的想法用使用在我測試圖片能不能適用?
有這樣的想法,不過沒能力寫出code。

附檔是,原圖以及二直化後的圖


我在其他文章有看到 "水平與垂直投影法"
裡面有用到一個" Series1 " ,這個是物件還是做什麼用途?
能不能試用於我做的多邊形



------
嫩的我,需要多多曬太陽
附加檔案:47cdfe980089d_Test.rar
編輯記錄
阿鬼就是我 重新編輯於 2008-03-05 10:30:35, 註解 無‧
阿鬼就是我 重新編輯於 2008-03-05 10:31:45, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-05 10:42:48 IP:118.169.xxx.xxx 訂閱

前輩好,

我有一個想法,我把一張圖二直化之後,我想要算出他的中心
圖是一張不規則的多邊形,我想應該是
先算出他的左方、上方,求出他的左上角,
在算出他的右方、下方,求出他的右下角,
兩條對角線交叉,這個應該就是他的中心/重心,
這樣的想法用使用在我測試圖片能不能適用?
同樣的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=92611
有這樣的想法,不過沒能力寫出code。
所以?

我在其他文章有看到 "水平與垂直投影法"
裡面有用到一個" Series1 " ,這個是物件還是做什麼用途?
能不能試用於我做的多邊形

http://delphi.ktop.com.tw/board.php?cid=169&fid=936&tid=18760
心得分享 : 如何使用TChart?




阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-05 15:05:23 IP:60.250.xxx.xxx 訂閱

前輩,

我在你回覆的某篇文章,發現重直投影

程式碼
Series1->Clear();
int DistributionX[160]={0};
Graphics::TBitmap*Bmp1=new Graphics::TBitmap();
Bmp1->LoadFromFile("test.bmp");
Image1->Picture->Assign(Bmp1);
byte* ptr1;
for (int y=0;yHeight;y )
{
ptr1=(byte*)Bmp1->ScanLine[y];
for (int x=0;xWidth;x )
{
if (ptr1[x*3]==255)
{
DistributionX[x] =1;
}
}
}
Image1->Canvas->Pen->Color=clYellow;
for (int x=0;xWidth;x )
{
Series1->Add(DistributionX[x],x,TColor(clBlue));
if (DistributionX[x]>0&&DistributionX[x]<60&&DistributionX[x-1]==0
||DistributionX[x]>0&&DistributionX[x]<60&&DistributionX[x 1]==0
)
{
Image1->Canvas->MoveTo(x,0);
Image1->Canvas->LineTo(x,Image1->Height);
}
}
delete Bmp1;



------
嫩的我,需要多多曬太陽
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-05 15:46:33 IP:118.169.xxx.xxx 訂閱
1.你的case假如要求出每個白色區域的重心,投影法是不適用的
2.TChart元件裡面你新增一個曲線圖就會看到Series1



===================引 用 阿鬼就是我 文 章===================

前輩,

我在你回覆的某篇文章,發現重直投影

程式碼
Series1->Clear();
int DistributionX[160]={0};
Graphics::TBitmap*Bmp1=new Graphics::TBitmap();
Bmp1->LoadFromFile("test.bmp");
Image1->Picture->Assign(Bmp1);
byte* ptr1;
for (int y=0;yHeight;y )
{
ptr1=(byte*)Bmp1->ScanLine[y];
for (int x=0;xWidth;x )
{
if (ptr1[x*3]==255)
{
DistributionX[x] =1;
}
}
}
Image1->Canvas->Pen->Color=clYellow;
for (int x=0;xWidth;x )
{
Series1->Add(DistributionX[x],x,TColor(clBlue));
if (DistributionX[x]>0&&DistributionX[x]<60&&DistributionX[x-1]==0
||DistributionX[x]>0&&DistributionX[x]<60&&DistributionX[x 1]==0
)
{
Image1->Canvas->MoveTo(x,0);
Image1->Canvas->LineTo(x,Image1->Height);
}
}
delete Bmp1;



阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-03-05 21:02:25 IP:203.68.xxx.xxx 訂閱

感謝,前輩提供的資訊

站務副站長dllee 所提供的code

假設您的物體是方形所作尋找物件左上/右下座標的方式
http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=90326


我會試試看



------------------------------------------

前輩,
今天到學校問老師,他告訴我一各方向,
在二直化的圖,黑色部分是腫瘤,白色部分是空白背景,
然後去掃這張圖,
掃到白色部份就沒東西,
掃到黑色部份,就會有座標,
例如: 假設XY 最大是(20,20)
最上方(0,20)
最下方(-20,0)
最左方(-20,0)
最右方(20,0)

掃出來一推座標,以上的最上方、下方、左方、右方
連成一各矩形,
左上方、右下方連成一線,
右上方、左下方連成一線,
交叉點可以求出大概的中/重心。


那.....程式方面要怎麼掃?
有什麼類似的方法可以使用?


===================引 用 taishyang 文 章===================
1.你的case假如要求出每個白色區域的重心,投影法是不適用的
2.TChart元件裡面你新增一個曲線圖就會看到Series1


------
嫩的我,需要多多曬太陽
編輯記錄
阿鬼就是我 重新編輯於 2008-03-05 21:16:11, 註解 無‧
阿鬼就是我 重新編輯於 2008-03-05 21:44:51, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-03-05 23:02:35 IP:118.169.xxx.xxx 訂閱
我會覺得你沒有自己先寫程式就直接來發問.
不好意思,小弟放棄 ^_^
阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-03-08 22:57:29 IP:122.116.xxx.xxx 訂閱
物體是方形所作尋找物件左上/右下座標的方式 

[C Error] Unit2.cpp(202): E2268 Call to undefined function 'R'
[C Error] Unit2.cpp(202): E2268 Call to undefined function 'G'
[C Error] Unit2.cpp(202): E2268 Call to undefined function 'B'

如果不想 function call , 可以直接在Button 底下定義嗎? 該怎麼定義呢
code 轉載於 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=90326


[code c#]

void __fastcall TForm1::Button5Click(TObject *Sender)
{
//2直化,腫瘤部份為黑色
int i,j,w,h;
int oLeft,oTop,oRight,oBottom;
int centerX,centerY;
bool ObjectFound=false;
for(i=0;i<256;i )
{
for(j=0;j<256;j )
{
if (R(i,j)==0 && G(i,j)==0 && B(i,j)==0) //RGB代表色彩色模型
{ // 找到左上角(起點)
ObjectFound=true;
oLeft=i;
oTop=j;
for(w=i 1;w<256;w ) // 向右找
{
if(R(w,j)==0 && G(w,j)==0 && B(w,j)==0) //RGB代表色彩色模型
continue; // 還是物件點, 繼續找
else
break; // 不再是物件點, 結束尋找
}
oRight=w-1;
for(h=j 1;h<256;h ) // 向下找
{
if(R(i,h)==0 && G(i,h)==0 && B(i,h)==0) //RGB代表色彩色模型
continue; // 還是物件點, 繼續找
else
break; // 不再是物件點, 結束尋找
}
oBottom=h-1;
break; // 只找一個物件, 己找到, 可以結束尋找了
}
}
}
if(ObjectFound) // 有找到才能算中心
{

[/code]
}
}

------
嫩的我,需要多多曬太陽
編輯記錄
阿鬼就是我 重新編輯於 2008-03-08 23:00:25, 註解 無‧
dicky9055
一般會員


發表:20
回覆:48
積分:18
註冊:2006-08-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-03-09 00:16:46 IP:203.79.xxx.xxx 訂閱
我想..你需要去...練習..bcb
因為你現在離寫影像處理程式...有距離
系統時間:2024-04-26 12:35:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!