想請問一下jpg的直方圖等化 |
尚未結案
|
happychung
一般會員 發表:2 回覆:1 積分:0 註冊:2005-10-13 發送簡訊給我 |
我想用將圖檔做灰階圖的直方化(8bit的)
目前bmp檔是成功的
如下
原圖
bmp圖經過直方等化
可是當我使用轉換程式將jpg讀進來轉成bmp
再使用直方均化~
就會變這樣@@~上面會變得很奇怪><
請問一下是我的轉檔過程有錯誤嗎?
我是參考之前文章的轉檔方試~如下
------
Graphics::TBitmap *tmpBitmap = new Graphics::TBitmap(); AnsiString fName = OpenPictureDialog1->FileName;
AnsiString curExt = LowerCase(ExtractFileExt(fName)); if (curExt == ".jpg" || curExt == ".jpeg") {
TJPEGImage *JPEG = new TJPEGImage();
JPEG->LoadFromFile(fName);
tmpBitmap->Assign(JPEG);
delete JPEG;
} else if(curExt == ".bmp") {
tmpBitmap->LoadFromFile(fName);
} Image1->Picture->Bitmap->Assign(tmpBitmap); delete tmpBitmap;
tmpBitmap = NULL;
}
------
可以請大大幫忙一下嗎?
謝謝m(_ _)m
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
happychung
一般會員 發表:2 回覆:1 積分:0 註冊:2005-10-13 發送簡訊給我 |
引言: happychung: 讀入JPG後,處理前,試著先下下列指令看看: Image1->Picture->Bitmap->PixelFormat = pf24bit; 或者檢查轉換後的數值是否在0~255之間? RichTop 敬上richtop 您好: 我將全部改成24bit後就可以了@@ 可是我滿想知道為什麼在8bit下面是不行的呀><? 8bit下我打的是 --- int change_to_gray=ptr[x]; ptr[x]=gray[change_to_gray]; --- 24bit下我打的是 --- int change_to_gray=0.114*ptr[x*3] 0.587*ptr[x*3 1] 0.299*ptr[x*3 2]; ptr[x*3]=ptr[x*3 1]=ptr[x*3 2]=gray[change_to_gray]; --- 用24bit來做的話 好像處理完還要再把他變成灰階的圖 感覺多了一個步驟@@ 照理說0~255不是8bit就可以解決了嗎?? 還是我的觀念有錯>< 可以麻煩幫我解惑一下嗎? 謝謝:) |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |