關於Image檔(.raw)解析度與灰階轉換的問題 |
尚未結案
|
ch_sen_long
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2003-09-27 發送簡訊給我 |
|
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
所謂 .raw 的圖檔,表示內容是純像素(Pixel)的資料,沒有檔頭檔尾。
如果您的原始圖檔是
512x512 8bits 灰階,那檔案大小一定要是 262144 bytes =512*512
要轉成 256x256,簡單的方法可以 4 點取 1 點或是 4 點取平均,以下是 4 點取 1 點的例子:
void __fastcall TForm1::Button1Click(TObject *Sender) { BYTE img512[512][512]; BYTE img256[256][256]; TMemoryStream *stm=new TMemoryStream; stm->LoadFromFile("512x512.raw"); stm->ReadBuffer(img512,512*512); for(int i=0;i<256;i ) for(int j=0;j<256;j ) img256[i][j]=img512[i*2][j*2]>>4; // 8bits 轉 4bits stm->Clear(); stm->WriteBuffer(img256,256*256); stm->SaveToFile("256x256.raw"); delete stm; }關於轉 4bits 的部分,可以直接取原像素的高 4 位元,如上的範例。 而以上的範例還是以 8bits 來存處理後的 4bits 內容,如果您希望檔案更小,以一個 byte 存 2 個像素值,則請自行修改。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/09/28 08:15:58
------
http://www.ViewMove.com |
ch_sen_long
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2003-09-27 發送簡訊給我 |
|
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
您可以找找本站中將資料以 TImage 來顯示的方法,例如用
TImage::Pixel[x][y] 直接指定您的 raw 資料,或是設定灰階色盤,再以 ScanLine 的方式指定,或是以 Windows api 來建立 Bitmap 再由 TImage 顯示。
或請參考 taishyang 版主發表的
■【BCB】【發表】讀RAW Date的影像
http://delphi.ktop.com.tw/topic.php?topic_id=38156
■【問題】請問一下ScrollBox的應用
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38082 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/09/30 22:06:02
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |