MATLAB圖片的色彩轉換
- 一、需求分析
- 二、演算法分析
- 三、實驗代碼
- 四、實驗結果
- 五、心得體會
- 六、致謝
一、需求分析
從電腦上讀取一張彩色影像,通過獨立編程(不使用已有函式)
①實作將彩色影像轉換為灰度影像、黑白影像的功能;
②實作將影像整體呈現效果為偏綠色風格;
③并將原始影像、灰度影像、黑白影像、綠色濾鏡影像展示在同一個影像 視窗內,
每個子圖要有相應的圖名,最終呈現效果參考如圖,
二、演算法分析
1.彩色影像轉換為灰度影像公式:Y=0.299R+0.587G+0.114*B
2.彩色影像轉換為黑白影像公式:
- X = R + G + B 3 X=\frac{R+G+B}{3} X=3R+G+B?
- c ( u ) = { 1 , X ≥ 125 0 , X < 125 c(u)=\begin{cases} 1,X\geq125\\ 0, X<125\end{cases} c(u)={1,X≥1250,X<125?
3.加綠色濾鏡思路:將彩色影像的G通道值整體變大一定數值即可,
4.將影像讀取后視作影像矩陣,對影像的操作即為對影像矩陣中每個元素進行操作,采用遍歷每個元素操作的方法,
三、實驗代碼
clear
clc
% 讀入影像
img = imread('敖丙.jpg');
%分離r,g,b通道
R = img(:,:,1);
G = img(:,:,2);
B = img(:,:,3);
%創建一個新的視窗
figure;
subplot(2,2,1),imshow(img),title('原圖');
subplot(2,2,2),Gray_img = 0.299*R+0.587*G+0.114*B,imshow(Gray_img),title('灰度圖');
imwrite(Gray_img,'C:\Users\25392\Desktop\灰色敖丙.jpg');
subplot(2,2,3);
Gray_img = imread('灰色敖丙.jpg');
[m,n,t]=size(Gray_img);
alpha=125; %閾值
for i=1:m
for j=1:n
for k=1:t
if Gray_img(i,j,k)>=alpha
imbw(i,j,k)=1;
else
imbw(i,j,k)=0;
end
end
end
end
imshow(imbw)
title('二值圖')
subplot(2,2,4);
Green_img(:,:,1)=R;
Green_img(:,:,2)=1.5*G;%影像的綠色分量加大
Green_img(:,:,3)=B;
imshow(Green_img)
title('綠色濾鏡');
四、實驗結果

五、心得體會
對于這次期末作業,我個人感覺對自己的能力有所提升,
處理圖片這個專案,其實難度不大,將彩圖制成灰度圖片直接用Y=0.299R+0.587G+0.114*B即可,給圖片加綠色濾鏡也挺簡單的,直接把彩色影像的G通道值變大些就好了,
唯一讓我覺得有難度的是彩色圖轉成黑白二值圖,最開始我想把RGB相加再除以3但遇到了一個問題,RGB相加時超過255的話會全變成255,導致輸出的圖片一片黑,
還有就是彩色圖轉成黑白二值圖時,應該先把彩色圖片轉成灰度圖片以及在寫MATLAB程式時,在最開始的地方要養成寫clear和clc的習慣,
最后,非常感謝尹寬老師的傾情授課,讓我識訓了許多知識!
六、致謝
非常感謝微博用戶提供不用im2bw函式將圖片轉換成二值圖的方法!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244766.html
標籤:其他
