opencv之伪彩变换
opencv之偽彩變換
我們在處理紅外圖像時,由于紅外圖像都是16位的數據,灰度范圍較大,對比度不明顯,經常通過直方圖均衡的方式將圖像增強進行8位的顯示。
紅外圖像在一定程度上反映了環境中物體的溫度變化——我們可以認為較暗的圖像區域表示的是溫度較低的區域(藍色來表示),更加明亮的區域認為是溫度較高的區域(紅色來表示),進而將灰度圖轉變為彩色數據便于人類的視覺系統進行可視化。
用偽彩色更好地顯示數據的其他例子是高度、壓力、密度、濕度等等。
applyColorMap偽彩色函數
OpenCV定義了12種colormap(色度圖),可以應用于8位的灰度圖像,使用函數applyColorMap產生偽彩色圖像。
applyColorMap定義
void applyColorMap(InputArray src, OutputArray dst, int colormap); // InputArray src: 輸入原始圖像(只支持8位灰度圖像) // OutputArray dst: 輸出結果偽彩色圖像 // int colormap: 色度圖的種類applyColorMap用法
using namespace cv; Mat im_gray = imread("pluto.jpg", IMREAD_GRAYSCALE); Mat im_color; applyColorMap(im_gray, im_color, COLORMAP_JET);下圖顯示了一個關于colormap(色度圖)的視覺表示和COLORMAP_*的數值,左邊的顏色模式表示較低的灰度值,右邊的則表示較高的灰度值。
LUT顏色查找表
**1、定義一個映射:**色度圖是從0-255值256種顏色映射。在OpenCV,我們需要創建一個大小為256×1的8位彩色圖像來存儲256個顏色值。
**2、對照顏色使用查找表:**在OpenCV,你可以申請一個信息存儲在一個256×1的彩色圖像使用查找表LUT圖像。
LUT定義
void LUT(InputArray src, InputArray lut, OutputArray dst); // src表示的是輸入圖像(可以是單通道也可是3通道) // lut表示查找表(查找表也可以是單通道,也可以是3通道,如果輸入圖像為單通道,那查找表必須為單通道,若輸入圖像為3通道,查找表可以為單通道,也可以為3通道,若為單通道則表示對圖像3個,通道都應用這個表,若為3通道則分別應用 ) // dst表示輸出圖像LUT用法
#include<highgui\highgui.hpp> using namespace cv; int main() {uchar lutData[256 * 3];int j = 0;for (int i = 0; i<256; i++){if (i <= 100){lutData[i * 3] = 0;lutData[i * 3 + 1] = 50;lutData[i * 3 + 2] = 50;}if (i > 100 && i <= 200){lutData[i * 3] = 100;lutData[i * 3 + 1] = 10;lutData[i * 3 + 2] = 200;}if (i > 200){lutData[i * 3] = 255;lutData[i * 3 + 1] = 200;lutData[i * 3 + 2] = 100;}}Mat lut(1, 256, CV_8UC3, lutData);Mat a = imread("test.jpg", CV_LOAD_IMAGE_ANYCOLOR);Mat b;namedWindow("anjis", CV_WINDOW_AUTOSIZE);namedWindow("anjis1", CV_WINDOW_AUTOSIZE);imshow("anjis", a);LUT(a, lut, b);imshow("anjis1", b);waitKey(); }附錄
0 COLORMAP_AUTUMN
1 COLORMAP_BONE
2 COLORMAP_JET
3 COLORMAP_WINTER
4 COLORMAP_RAINBOW
5 COLORMAP_OCEAN
6 COLORMAP_SUMMER
7 COLORMAP_SPRING
8 COLORMAP_COOL
9 COLORMAP_HSV
10 COLORMAP_PINK
11 COLORMAP_HOT
總結
以上是生活随笔為你收集整理的opencv之伪彩变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java零基础学习记录09(飞机躲避炮弹
- 下一篇: h5后缀文件python处理