getTickCount)。8-bit 單通道有 256 階,RGB 三通道組合達 1600 萬色。為降低運算量,可將色階壓縮,例如以 10 為單位量化:

公式含除法,效能較差。優化策略:預先計算 256 個輸入值對應的輸出值,存入查找表 table[256],執行時直接 table[pixel] 取代運算。
單通道,標準二維矩陣:rows × cols。

三通道交錯儲存,記憶體連續,邏輯上視為 rows × (cols*3) 的二維陣列。

| 方法 | 說明 | 相對速度 |
|---|---|---|
C 風格指標 ptr[] | 手動計算索引,連續記憶體單行掃描 | 基準 |
迭代器 MatIterator_ | 泛型遍歷,支援多通道 Vec3b | 較慢 |
隨機存取 at() | 每次邊界檢查,地址計算開銷大 | 最慢 |
| LUT 查找表 | OpenCV 優化內建,向量化/SIMD 加速 | 最快 |
// 建立查找表
uchar table[256];
for (int i = 0; i < 256; ++i) table[i] = saturate_cast<uchar>(divideWith * (i / divideWith));
// LUT 方式
Mat lookUpTable(1, 256, CV_8U, table);
LUT(src, lookUpTable, dst);
// 效能計時
double t = (double)getTickCount();
for (int i = 0; i < times; ++i) LUT(src.clone(), lookUpTable, dst);
t = 1000 * ((double)getTickCount() - t) / getTickFrequency() / times;

LUT(),底層已針對 SIMD/平行化優化,最快且程式碼最簡潔。