OpenCV(二)——LUT顏色空間縮減
阿新 • • 發佈:2018-11-11
LUT是look up table的縮寫,中文解釋:顯示查詢表,實際意義很簡單易懂。
舉個例子,如果是單通道的影象,灰度梯度是0~255,即分為256級。
你可以設定對應灰度轉化成你設定成的灰度
table[256];
table[0] = 2;
table[1] = 5;
像上圖就是把原灰度0的值變成2,灰度1變為5。
展示下如何使用LUT進行影象壓縮。
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("lena.png",IMREAD_GRAYSCALE); Mat lookUpTable(1, 256, CV_8U); uchar table[256]; int divideWith = 20; //壓縮級 20灰度為1級 for(int i = 0; i < 256; ++i) table[i] = divideWith * (i / divideWith); Mat dst; uchar *p = lookUpTable.data; for(int i = 0; i < 256; ++i) { p[i] = table[i]; } for(int i = 0; i < 256; i++) { LUT(image,lookUpTable, dst); } imshow("src",image); imshow("dst",dst); waitKey(); }
左圖為原圖,右圖通過20為一級的顏色空間縮減(0~19為0, 20~39為20 以此類推)