chatman
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:7 回覆:2 積分:1 註冊:2004-10-07
發送簡訊給我
|
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19022588&CC=425432) ![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19022901&CC=425439)
左上圖是我參考
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32450
的放大程式碼所得到的圖。而右上圖是我寫的二值化程式後所跑出來的結果
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19023214&CC=425446) ![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19023527&CC=425453)
再左上圖是我參考
http://delphi.ktop.com.tw/topic.php?topic_id=34732
的內插法放大所得到的圖。而右上圖是我寫的二值化程式後所跑出來的結果。
奇怪的是兩者都有右半邊跑不出的怪現象
就算跑出來也不是純二值化....有綠色、黃色等的雜訊
底下是我的二值化程式:
------------------------------------------------------
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Byte *ptr;
int r,g,b;
int gray;
int i,j;
int threshold;
threshold=ScrlBarThreshold->Position; //這只是用ScrlBar控制閥值而已
edtThreshold->Text=ScrlBarThreshold->Position;
Bmp->Assign(OriginPic->Picture->Bitmap);
for( j=0 ; j< Bmp-> Height ; j++)
{
ptr = (Byte *)Bmp->ScanLine[j];
for( i=0 ; i < Bmp->Width ; i++)
{
b=ptr[i*3];
g=ptr[i*3+1];
r=ptr[i*3+2];
gray=0.299*r +0.587*g+0.114*b;
if(gray>threshold)
gray=255;
else
gray=0;
ptr[i*3]=(Byte)gray;
ptr[i*3+1]=(Byte)gray;
ptr[i*3+2]=(Byte)gray;
}
}
ChangePic->Picture->Assign(Bmp);
delete Bmp;
-------------------------------------------
請問這問題是出在哪阿?
對了...我上述兩個放大後的圖用photoshop都開不了
它說"此檔案格式模組無法剖析檔案"
所以可能是檔案的問題嗎?
多謝各位的幫忙~~~ ![]() 發表人 -
|
JerryKuo
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:42 回覆:571 積分:322 註冊:2003-03-10
發送簡訊給我
|
引言:
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19022588&CC=425432)
左上圖是我參考
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32450
的放大程式碼所得到的圖。而右上圖是我寫的二值化程式後所跑出來的結果
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=19023214&CC=425446)
再左上圖是我參考
http://delphi.ktop.com.tw/topic.php?topic_id=34732
的內插法放大所得到的圖。而右上圖是我寫的二值化程式後所跑出來的結果。
奇怪的是兩者都有右半邊跑不出的怪現象
就算跑出來也不是純二值化....有綠色、黃色等的雜訊
底下是我的二值化程式:
------------------------------------------------------
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Byte *ptr;
int r,g,b;
int gray;
int i,j;
int threshold;
threshold=ScrlBarThreshold->Position; //這只是用ScrlBar控制閥值而已
edtThreshold->Text=ScrlBarThreshold->Position;
Bmp->Assign(OriginPic->Picture->Bitmap);
for( j=0 ; j< Bmp-> Height ; j加加) //奇怪 我的"加"顯示不出來XD
{
ptr = (Byte *)Bmp->ScanLine[j];
for( i=0 ; i < Bmp->Width ; i加加 )
{
b=ptr[i*3];
g=ptr[i*3加1];
r=ptr[i*3加2];
gray=0.299*r 加0.587*g加0.114*b;
if(gray>threshold)
gray=255;
else
gray=0;
ptr[i*3]=(Byte)gray;
ptr[i*3加1]=(Byte)gray;
ptr[i*3加2]=(Byte)gray;
}
}
ChangePic->Picture->Assign(Bmp);
delete Bmp;
-------------------------------------------
請問這問題是出在哪阿?
對了...我上述兩個放大後的圖用photoshop都開不了
它說"此檔案格式模組無法剖析檔案"
所以可能是檔案的問題嗎?
多謝各位的幫忙~~~
>>< face="Verdana, Arial, Helvetica"> 發表程式時,請參照版規做修改。謝謝合作
版規
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47262
|
JerryKuo
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:42 回覆:571 積分:322 註冊:2003-03-10
發送簡訊給我
|
chatman你好: 請問你的來源圖片是色板24bits嗎?因為我使用24bits的圖片是正確的
如果你的來源圖片不是24bits,依照程式的寫法去執行錯的。
|
chatman
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:7 回覆:2 積分:1 註冊:2004-10-07
發送簡訊給我
|
引言:
chatman你好: 請問你的來源圖片是色板24bits嗎?因為我使用24bits的圖片是正確的
如果你的來源圖片不是24bits,依照程式的寫法去執行錯的。
恩恩 後來我把所有有關處理此圖檔的程式加上了
Bitmap->PixelFormat = pf24bit; 後,的確可以成功的二值化也可能用photoshop開啟了
沒想到只是這麼簡單的道理阿~~我好嫩> >
|
JerryKuo
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:42 回覆:571 積分:322 註冊:2003-03-10
發送簡訊給我
|
引言:
恩恩 後來我把所有有關處理此圖檔的程式加上了
Bitmap->PixelFormat = pf24bit; 後,的確可以成功的二值化也可能用photoshop開啟了
沒想到只是這麼簡單的道理阿~~我好嫩>如果沒設定>
那是不是以後圖片的處理最好都要加上> >
>>< face="Verdana, Arial, Helvetica">
chatman你好: 查一下PixelFormat的說明,應該不難了解它的物理意義,每個像素的RGB在不同的
格式下有不同的排列方式。之所以會建議使用pf24bit,是因為用這格式在寫程式
時,比較好套用RGB(8bit,8bit,8bit)觀念,寫程式時比較方便。
但如果遇到輸入圖不為pf24bit,在讀取每個像素時就要特別注意,因為RGB並不會
8bits,8bits排列。 發表人 - jerrykuo 於 2004/12/02 16:59:00
|