※ 引述《heymei0421 (heymei)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: C
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 無
: 問題(Question):
: 學長給我一個yuv檔案的圖檔 要我先做分割 在做transform 在做量化 在做反量化
: 反transform ...etc 看看失真前後圖片的差異。
: 我卡在分割卡很久 目前我將yuv所有的像素讀出來並以char的大小存在一維陣列
: 而學長指定分割的圖示規格是8*8 ,而原始圖像的寬長是352,288,分割完成後
: 應該有寬44長36個小方塊,每個小方塊裡面有64個pixel。
: 問題就是我想了老半天 都不知道怎麼把一堆類型相同的資料弄成一個資料來代表
: 我想過用結構,但失敗= = 我想過用一個多個不同的陣列分別代表原始陣列的部分
: 資料,但是我也不知道多個不同陣列 該怎麼產生~"~
: 請大神提示>"<
: 推 shiengchyi:在表示數字上面 用unsigned char 以binary方式讀進來 08/03 16:27
: → shiengchyi:尤其是影像檔案 多半是unsigned int 08/03 16:27
其實你可以完全不要考慮陣列,純粹使用pointer去處理,
一開始定義好每一行的pixel數量,假定讀入的陣列叫做arrImg;
那麼取得第三列第二行的pixel value p
unsigned char *tmpBuf;
tmpBuf = (unsigned char*)malloc(pixelSize);
memcpy(tmpBuf, (arrImg + ((3-1)*imgWidth + (2-1))*pixelSize), pixelSize);
p = (unsigned int)tmpBuf;
至於如何取出8*8 block,那就是迴圈的藝術了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.71.22