Kinect的深度圖像和紅外圖像都是16位深度,利用Matlab標定時,用了一款老版本的Matlab標定箱,該工具箱能夠實現單目的某一場景下的外參計算,進而可以利用兩個相機與標定板的外參,來計算兩個相機之間的相對位姿。但是老版本有一個問題,16位的TIF圖像讀進去一片白,根本沒法實現標定。所以需要轉成8位的來進行標定
1.代碼方法
主要是利用高位截斷的思想,取16位數據的高八位,作爲8位圖像的數值。但是效果有點不理想,圖像轉換成8位後成雪花狀:
Mat photoGrid::converTIF16to8(Mat input)
{
Mat result = Mat::zeros(input.rows, input.cols, CV_8UC1);
for (int i = 0; i < input.rows; i++)
{
for (int j = 0; j < input.cols; j++)
{
int value = input.at<ushort>(i, j);
result.at<uchar>(i, j) = value; //16位數據截斷,只留高8位
}
}
return result;
}
二、藉助ps轉化圖像格式
將圖像丟入PS中,如圖:
【圖像】→【模式】→【8位通道】,圖像效果較好。