MATLAB圖像uint8,uint16,double, rgb轉灰度解釋


1.uint8,uint16與double

為了節省存儲空間,matlab為圖像提供了特殊的數據類型uint8(8位無符號整數),以此方式存儲的圖像稱作8位圖像。matlab讀入圖像的數據是uint8,而matlab中數值一般采用double型(64位)運算。

概括:uint8,uint16--存儲,顯示

           double---計算數據處理

 

2.轉換

I = rgb2gray(imread(‘dog2.jpg')); %把圖像變為灰度圖像

f = im2double(I);  % 灰度圖轉double類型--數據處理,保證精度

g = im2uint8(f);    % 圖像轉 uint8 類型,一般不在計算中用,容易引入舍入誤差

 

f = double(I);      %double()將無符號整型轉換為雙精度浮點型double,數據大小沒有變化,原本數據是0~255之間,轉化后還是0~255。
g = im2uint8(f);  % im2uint8()實現double轉化為uint8,如果圖像矩陣數據是double類型的0-255,直接im2uint8()轉換的話,matlab會將大於1的數據都轉換為255,0-1之間的數據才會映射到0~255之間整型的數據,所以圖像會顯示白色。
h = uint8(round(f));  %uint8()實現double轉化為uint8 

3.為什么要進行rgb轉灰度?

  1. 自然界中,顏色本身非常容易受到光照的影響,rgb變化很大,反而梯度信息能提供更本質的信息
  2. 三通道轉為一通道后,運算量大大減少
  3. opencv的很多函數只支持單通道

  什么時候不需要轉灰度?

       基於顏色的算法,顏色本身由於樣本環境的特殊原因很有價值,比如醫療圖像中染色劑都是紅色

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM