我正在尋找更快的方式處理下面的C代碼。我有一個640x480的圖像,我想通過刪除圖像中的其他所有行和列來將其大小減少2倍。我在下面附上了代碼。有沒有更好的方法來優化代碼。更快速(優化)的圖像抽取解決方案(C++)
#define INPUT_NUM_ROW 480
#define INPUT_NUM_COL 640
#define OUTPUT_NUM_ROW 240
#define OUTPUT_NUM_COL 320
unsigned char inputBuf[INPUT_NUM_ROW* INPUT_NUM_COL];
unsigned char outputBuf[OUTPUT_NUM_ROW* OUTPUT_NUM_COL];
void imageDecimate(unsigned char *outputImage , unsigned char *inputImage)
{
/* Fill in your code here */
for (int p = 0; p< OUTPUT_NUM_ROW; p++) {
for (int q = 0; q < OUTPUT_NUM_COL; q++) {
outputImage[p*OUTPUT_NUM_COL + q] = inputImage[(p*INPUT_NUM_COL+q)*2];
// cout << "The pixel at " << p*OUTPUT_NUM_COL+q << " is " << outputImage[p*OUTPUT_NUM_COL+q] << endl;
}
}
}
大多數圖片都有很多頭字段需要更新。發佈的代碼僅處理實際的數據/像素字段。大多數像素字段(取決於標題信息)長度爲3或4字節。當壓縮圖像時,不要任意消除1/2行和1/2列。一個更好的方法是對行進行平均,然後(在一個單獨的循環中)平均對列,記住每列(一個像素)由3或4個字節組成。另外請記住(在大多數圖像中)一行中的字節數將是4的倍數, – user3629249
您對包含在圖像中的標題字段以及平均像素進行了描述,這些像素反過來使別名不那麼突出。但是,我正在尋找更多的代碼優化。 –