<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RGBD相機(jī)模型與圖片處理

          共 1521字,需瀏覽 4分鐘

           ·

          2022-03-23 10:45

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時間送達(dá)

          ?

          圖像


          ?

          灰度圖


          灰度是描述灰度圖像內(nèi)容的最直接的視覺特征。它指黑白圖像中點(diǎn)的顏色深度,范圍一般從0到255,白色為255,黑色為0,故黑白圖像也稱灰度圖像?;叶葓D像矩陣元素的取值通常為[0,255],因此其數(shù)據(jù)類型一般為8位無符號整數(shù),這就是人們通常所說的256級灰度。
          灰度圖:一個像素的灰度可以用8 位整數(shù)記錄,也就是一個0~255的值。

          ?

          深度圖


          當(dāng)我們要記錄的信息更多時,一個字節(jié)就不夠了。
          在RGB-D相機(jī)的深度圖中,記錄了各個像素與相機(jī)之間的距離。這個距離通常是以毫米為單位,而RGB-D 相機(jī)的量程通常在十幾米左右,超過了255。
          人們會采用16 位整數(shù)(C++ 中的unsigned short)來記錄深度圖的信息,也就是位于0~65535 的值。換算成米的話,最大可以表示65 米,足夠RGB-D 相機(jī)使用了。

          ?

          彩色圖


          彩色圖像的表示則需要通道(channel)的概念。在計算機(jī)中,我們用紅色、綠色和藍(lán)色這三種顏色的組合來表達(dá)任意一種色彩。于是對于每一個像素,就要記錄其R、G、B 三個數(shù)值,每一個數(shù)值就稱為一個通道。例如,最常見的彩色圖像有三個通道,每個通道都由8 位整數(shù)表示。在這種規(guī)定下,一個像素占據(jù)24 位空間。
          通道的數(shù)量、順序都是可以自由定義的。在OpenCV 的彩色圖像中,通道的默認(rèn)順序是B、G、R。也就是說,當(dāng)我們得到一個24 位的像素時,前8 位表示藍(lán)色數(shù)值,中間8 位為綠色,最后8 位為紅色。同理,亦可使用R、G、B 的順序表示一個彩色圖。如果還想表達(dá)圖像的透明度,就使用R、G、B、A 四個通道。

          ?

          RGB彩色圖與灰度圖之間的轉(zhuǎn)換


          彩色圖像轉(zhuǎn)換為灰度圖像時,需要計算圖像中每個像素有效的亮度值,其計算公式為:
          Y = 0.299R + 0.578G + 0.114B

          雙目相機(jī)通過視差來計算深度。RGBD相機(jī)則可以主動測量每個像素的深度。

          1. 通過紅外結(jié)構(gòu)光(Structured Light)來測量像素距離的。例子有Kinect 1 代、Project Tango 1 代、Intel RealSense 等。

          2. 通過飛行時間法(Time-of-flight,ToF)原理測量像素距離的。例子有Kinect 2 代和一些現(xiàn)有的ToF 傳感器等

          RGBD相機(jī)原理圖


          ?

          深度圖的保存


          那么如何從RGBD相機(jī)提取像素的深度信息呢?
          下面是一個簡單的小程序,可以顯示像素的深度信息.

          #include 
          #include
          #include
          using namespace std;

          float depthscale = 1.0f/1000; //尺度因子,表示一個像素對應(yīng)多少實際中的米
          int main(int argc, char **argv)
          {
          cv::Mat depth = cv::imread("img.jpg");
          depth.convertTo(depth,CV_32FC1,depthscale); //這個轉(zhuǎn)換很重要

          for (int v = 0; v < depth.rows; v++)
          {
          for (int u = 0; u < depth.cols; u++) {
          unsigned int d = depth.ptr<unsigned short>(v)[u]; // 深度值
          if (d == 0)
          continue; // 為0表示沒有測量到
          else
          {
          cout<""
          ;
          if(v%50==0||u%50==0)
          cout<<endl;
          }

          }
          }
          return 0;
          }

          ?

          ConvertTo()函數(shù)


          需要注意,其中的ConvertTo函數(shù)作用如下:
          img: 圖像數(shù)據(jù)來源,其類型為Mat。
          注意: 不是所有格式的Mat型數(shù)據(jù)都能被使用保存為圖片,目前OpenCV主要只支持單通道和3通道的圖像,并且此時要求其深度為8bit和16bit無符號(即CV_16U),所以其他一些數(shù)據(jù)類型是不支持的,比如說float型等。如果Mat類型數(shù)據(jù)的深度和通道數(shù)不滿足上面的要求,則需要使用convertTo()函數(shù)和cvtColor()函數(shù)來進(jìn)行轉(zhuǎn)換。
          convertTo()函數(shù)負(fù)責(zé)轉(zhuǎn)換數(shù)據(jù)類型不同的Mat,即可以將類似float型的Mat轉(zhuǎn)換到imwrite()函數(shù)能夠接受的類型。
          而cvtColor()函數(shù)是負(fù)責(zé)轉(zhuǎn)換不同通道的Mat,因為該函數(shù)的第4個參數(shù)就可以設(shè)置目的Mat數(shù)據(jù)的通道數(shù)(只是我們一般沒有用到它,一般情況下這個函數(shù)是用來進(jìn)行色彩空間轉(zhuǎn)換的)。
          另外也可以不用imwrite()函數(shù)來存圖片數(shù)據(jù),可以直接用通用的XML IO接口函數(shù)將數(shù)據(jù)存在XML或者YXML中。

          具體含義,縮放并轉(zhuǎn)換到另外一種數(shù)據(jù)類型:

          1. dst:目的矩陣;

          2. type:需要的輸出矩陣類型,或者更明確的,是輸出矩陣的深度,如果是負(fù)值(常用-1)則輸出矩陣和輸入矩陣類型相同;

          3. scale:比例因子;

          4. shift:將輸入數(shù)組元素按比例縮放后添加的值;
            dst(i)=src(i)xscale+(shift,shift,...)

          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機(jī)視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 28
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲高清无码免费观看 | SM欧美手机在线观看 | www.久久久 | 青青青操 | 亚洲娱乐在线 |