matlab-影像處理:映像格式的轉換

來源:互聯網
上載者:User

這篇文章只羅列出一些最簡單的映像格式轉換方法。

1,RGB映像轉與灰階圖相互轉換

從視覺角度來看rgb映像是有色彩的,而灰階圖則只有255種灰色。

從矩陣來看,rgb是個三維矩陣--三個二維矩陣落在一起,一層是R一層是G一層是B。灰階圖是個二維矩陣。

從rgb映像轉換為灰階圖很容易:rgb2gray(f) 一個函數搞定。至於原理是什麼,沒時間管它因為暫時用不著,感興趣的有時間可以瞭解一些。

但是從灰階圖轉換為rgb有點費事了,我也很奇怪這一點,去網上查了好多,貌似技術控們總是喜歡用技術含量高的東西,很多方法都是用colormap完成的,這東西很好,但是我不能在10分鐘搞明白,所以我又找到了一個更簡單的方法--把二維的複製三次讓他成為三維的不就行了?嗯,果真是行的。

rgbf=repmat(gf,[1 1 3]), 這個函數就是把灰階映像f的矩陣,在一維方向複製一次,二維方向複製一次,三維方向複製三次。~不是在源映像複製,是在rgbf上複製,複製完rgbf是個size(f,1),size(f,2),3的三維矩陣。這樣就可以把rgbf當做彩色圖來使用了,比如將圖片(100,100)這一點標記為紅色---rgbf(100,100,:)=[255,0,0];

下面舉個簡單的小例子。因為我的目的不是將灰階圖複原成彩色圖,而只是在灰階圖上用一些色彩標記一些特定的地區而已,目的很簡單,實現起來也很容易。下面將展示如何將fig1中的黑色部分變為紅色。fig1其實是個二值映像,之後0和1兩個值。

代碼很簡單:

blacks=find(fig1==0);    %得到黑色地區

fr=fig1;  % 複製r,g,b通道

fg=fig1;

fb=fig1;

fr(blacks)=255;  % 將黑色變為紅色

fg(blacks)=0;

fb(blacks)=0;

figrgb=cat(3,fr,fg,fb);  % 合成彩色映像

       

          fig1                                     figrgb

 

2,double(f),將unit8或是uint16轉化為浮點型,因為無符號整形是很容易越界的,所以經常要轉換為浮點數來用。

3,把浮點數轉換為unit8或是unit16 把矩陣乘以255或是65536就可以。

4,mat2gray(f) 把矩陣f的值轉換到[0 1]範圍內。

5,im2uint8(f) 轉換為uint8格式,如果f是浮點數,那麼先將f整到[0 1]範圍內。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.