matlab实现彩色图像灰度化的三种方法
生活随笔
收集整理的這篇文章主要介紹了
matlab实现彩色图像灰度化的三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概要
將彩色圖像轉換為灰度圖像的過程稱為灰度化處理。
對于圖像而言,灰度化處理就是使彩色的R,G,B分量值相等的過程。
灰度化處理的方法主要有如下3種:
最大值法:使R,G,B的值等于3值中最大的一個,R=G=B=max(R,G,B),最大值法會形成亮度很高的灰度圖像。
平均值法:是R,G,B的值求出平均值,R=G=B=(R+G+B)/3,平均值法會形成較柔和的灰度圖像。
加權平均值法:根據重要性或其他指標給R,G,B賦予不同的權值,并使R,G,B的值加權平均,R=G=B=WR+VG+UB,W,V,U分別表示權重,研究表明,人對綠色的敏感度最高,對紅色次之,對藍色的敏感度最低,因此W>V>U,實驗和理論證明當W=0.30,V=0.59,U=0.11時,能得到最合理的灰度圖像。
二、圖片
三、實現
MyYuanLaiPic = imread('C:\lotus.jpg');%讀取RGB格式的圖像 %顯示原來的RGB圖像 figure(1); imshow(MyYuanLaiPic); MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函數進行RGB到灰度圖像的轉換 %顯示經過系統函數運算過的灰度圖像 figure(2); imshow(MyFirstGrayPic); [rows , cols , colors] = size(MyYuanLaiPic);%得到原來圖像的矩陣的參數 MidGrayPic1 = zeros(rows , cols);%用得到的參數創建一個全零的矩陣,這個矩陣用來存儲用下面的方法產生的灰度圖像 MidGrayPic1 = uint8(MidGrayPic1);%將創建的全零矩陣轉化為uint8格式,因為用上面的語句創建之后圖像是double型的 for i = 1:rows for j = 1:cols sum = 0; for k = 1:colors sum = sum + MyYuanLaiPic(i , j , k) / 3;%進行轉化的關鍵公式,sum每次都因為后面的數字而不能超過255 end MidGrayPic1(i , j) = sum; end end %平均值法轉化之后的灰度圖像 figure(3); imshow(MidGrayPic1);MidGrayPic2 = zeros(rows , cols);%用得到的參數創建一個全零的矩陣,這個矩陣用來存儲用下面的方法產生的灰度圖像 MidGrayPic2 = uint8(MidGrayPic2);%將創建的全零矩陣轉化為uint8格式,因為用上面的語句創建之后圖像是double型的 for i = 1:rows for j = 1:cols MidGrayPic2(i , j) =max(MyYuanLaiPic(i,j,:)); end end %最大值法轉化之后的灰度圖像 figure(4); imshow(MidGrayPic2);MidGrayPic3 = zeros(rows , cols);%用得到的參數創建一個全零的矩陣,這個矩陣用來存儲用下面的方法產生的灰度圖像 MidGrayPic3 = uint8(MidGrayPic3);%將創建的全零矩陣轉化為uint8格式,因為用上面的語句創建之后圖像是double型的 for i = 1:rows for j = 1:cols MidGrayPic3(i , j) = MyYuanLaiPic(i , j , 1)*0.30+MyYuanLaiPic(i , j , 2)*0.59+MyYuanLaiPic(i , j , 3)*0.11; end end %加權平均值法轉化之后的灰度圖像 figure(5); imshow(MidGrayPic3);四、結果
總結
以上是生活随笔為你收集整理的matlab实现彩色图像灰度化的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# winform实现2048游戏
- 下一篇: 二叉树的前序中序后序递归查找,深度,广度