[問題] 2D影像處理

看板C_and_CPP作者 (亞維)時間10年前 (2013/10/04 10:41), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 問題(Question): 最近在做影像處理遇到一個問題,特別發生在我想要同時處理兩張不同大小的圖片(raw). 當我程式只處理XY size大小相同的圖檔沒問題, 但當output圖檔有兩種size時第二種常會出現一些無法預期的錯誤 ex: 圖A 1024X768 用for loop讀進 1026*770 的矩陣像 double(*Imagedata)[Y] = new double [X][Y] 接著output除了沒有給值的邊緣是黑色其他都正常填滿, 但當我想要做一些處理例如 for ( int i =0; i < 100; i++) {for ( int j=0; j< 100; j++) { Imagedaata[j][i]=255; } } 就會出現一些奇怪的結果像是(理論上應該是左上角有白色100X100的正方形): http://ppt.cc/oQJA 我在for loop之下用"cout" pixel by pixel檢查是正確的 但出來的結果就是不對... 試了各種方法還是沒有結論... 不知道板上有沒有高手可以解答我的疑問? 謝謝! *[36m程式碼 *[m FILE *file; const int SizeX = 1024; const int SizeY = 768; const int EX=1026; const int EY=770; //讀圖檔 unsigned char (*Imagedata)[SizeY] = new unsigned char [SizeX][SizeY]; file=fopen("Image.raw","rb"); fread(Imagedata, sizeof(unsigned char), SizeX*SizeY, file); fclose(file); //寫進size較大的矩陣 double (*extendI)[EY] = new double [EX][EY]; for ( int i =0; i < SizeY; i++) {for ( int j=0; j<SizeX; j++) extendI[j+1][i+1]=static_cast<double>(Imagedata[j][i][0]) } //影像處理 for ( int i =0; i < 100; i++) {for ( int j=0; j< 100; j++) extendI[j][i]=255; } //寫進輸出矩陣 unsigned char (*output)[EY]=new unsigned char [EX][EY]; for ( int i =0; i < EY; i++) {for ( int j=0; j<EX; j++) output[j][i]=extendI[j][i]; } //輸出圖檔 file=fopen("output.raw","wb"); fwrite(output, sizeof(unsigned char), (EX)*(EY), file); fclose(file); return 0; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 142.136.124.34 ※ 編輯: rai1209 來自: 142.136.124.34 (10/04 11:01) ※ 編輯: rai1209 來自: 142.136.124.34 (10/04 11:06)

10/04 11:28, , 1F
看起來像是xy放反了
10/04 11:28, 1F

10/04 11:28, , 2F
不只白色方塊,原本圖片也讀成斜的了
10/04 11:28, 2F

10/04 11:30, , 3F
請愛用matlab(?
10/04 11:30, 3F

10/04 11:31, , 4F
有些圖片格式是從最後一列開始存的哦 自己注意一下
10/04 11:31, 4F

10/04 11:43, , 5F
看了圖片之後發現我搞錯問題了。 你有改Header嗎?
10/04 11:43, 5F

10/04 11:44, , 6F
我又錯了,因為檔案格式問題,解答在azureblaze
10/04 11:44, 6F

10/04 12:23, , 7F
原來如此! 這個圖檔沒有header, 之前處理相同size的似乎
10/04 12:23, 7F

10/04 12:25, , 8F
有自動修正的功能,當處理多種size時就會出錯了!
10/04 12:25, 8F

10/04 12:25, , 9F
感謝樓上兩位高手的解答!
10/04 12:25, 9F
文章代碼(AID): #1IJYhsTo (C_and_CPP)