matlab中的图像类型
MATLAB中的圖像類型?
?????????在MATLAB中數組是最基本的數據結構,大部分圖像用二維
數組即矩陣表示,矩陣中的一個元素對應一個像素。例如,一個由500行600列不同顏色點組成的圖像可以用500*600的矩陣來表示。當然也有一些圖像是用三維數組表示的,如RGB圖像的三個維分別表示像素的紅色、綠色和藍色分量值。這樣使得在MATLAB中使用圖形文件格式的圖像和使用其他類型的矩陣數據的方式一致。?
?????????在MATLAB中,一幅圖像可能包含一個顏色影像表矩陣。在圖像處理工具箱支持的圖像分為四個基本類型:RGB圖像、灰度圖像、索引圖像及二值圖像。它們的區別在于數據矩陣元素的不同含義。
RGB圖像?
???RGB圖像在MATLAB中存儲為一個n*m*3的三維數據數組。n,m
分別為圖像的行列數。數組可以是雙精度浮點型或unit8類型。數組中的元素定義了每個像素的紅、綠、藍顏色值,它們保存在數組的第三維里,這三個值共同構成了該像素的顏色。如,像素(4,7)表示第4行第七列的像素,它的紅綠藍顏色值分別保存在元素RGB(4,7,1)、RGB(4,7,2)和RGB(4,7,3)里。
灰度圖像?
???????灰度圖像是一個數據矩陣?I,每個元素代表一個像素,I的數據表示在一定范圍內的灰度值.I可以是雙精度浮點型,其值域為[0.0,1.0];也可以是unit8類型,其值域為[0,256]。
索引圖像?
???????索引圖象包括圖象矩陣和顏色數組。其中顏色圖是按圖象中顏色值進行排序后的數組。對于每個象素,圖象矩陣包含一個值,這個值就是顏色圖數組中的索引。顏色圖為m×3的雙精度值矩陣,各行分別指定紅、綠、藍(R、G、B)單色值,且R、G、B均為值域[0,1]上的實數值。
二值圖像?
這類圖像只包含一個由0,1構成的矩陣,可以保存為雙精度或unit8類型的數組。在圖像處理工具箱中為了節省空間都用unit8類型的數組。二值圖像可以看成一個僅由黑白兩色組成的特殊的灰度圖或者共有兩種顏色的索引圖,因此其顯示方式與灰度圖或索引圖類似。
?
4、設計方案?
圖像的四種基本類型是可以相互轉換的。有時需要對圖像類型進
行轉換以方便某些處理,MATLAB有實現對RGB圖像、灰度圖像、索引圖像及二值圖像相互轉換的函數。本次課程設計的核心就是利用圖像類型轉換函數來實現圖像類型之間的轉換。
1、索引圖像轉換為灰度圖像的函數ind2gray()?其語法格式為:I=indgray(X,map)?
它將具有顏色圖map的索引圖像X轉換為灰度圖像I,X可以是雙精度型或unit8型,I是雙精度型。
2、索引圖像轉換為RGB圖像的函數ind2rgb()?
???????其語法格式為:?
RGB=IND2RGB(X,map)?
它將具有顏色圖map的索引圖像X轉換為真彩色圖像RGB。?3、灰度圖像轉換為索引圖像的函數gray2ind()?
其語法格式為:?
[X,map]=gray2ind(I,n)?
它將灰度圖像I轉換成索引圖像X,具有顏色圖gray(n),n的默認值是64。?
4、RGB圖像轉換為索引圖像的函數rgb2ind()?其語法格式有下面五種:?
●?[X,map]=rgb2ind(RGB):?
直接RGB圖像轉換為具有顏色圖map
的矩陣X.?
●?[X,map]=rgb2ind(RGB,tol):??用均勻量化的方法將
RGB圖像轉
換為索引圖像X,tol的范圍從0.0到1.0.?[X,map]=rgb2ind(RGB,n):?使用最小量化方法將
RGB圖像轉換
為索引圖像X,map中包括至少n個顏色。?
●?[X,map]=rgb2ind(RGB,map):??將
RGB中的顏色與顏色圖map
中最相近的顏色匹配,將RGB轉換為具有MAP顏色圖的索引圖。?
●?[??]=rgb2ind(…,dither_option):??通過
dither_option參數來設置
是否抖動。?
5、RGB圖像轉換為灰度圖像的函數rgb2gray()?其語法格式有兩種:?
●I=rgb2gray(RGB):??將輸入的RGB圖像轉換為灰度圖I?●newmap=rgb2gray(map):??將輸入的顏色圖map返回一個等價的灰度圖
6、轉換為二值圖像的函數im2bw()
?????該函數通過閾值化方法將索引、灰度和RGB圖像轉換為二值圖
像。其語法格式有以下幾種:?
?????●BW=im2bw(I,map,level):?將顏色圖為map的索引圖像轉換為二?
值圖像?
●BW=im2bw(I,level):??將灰度圖像I轉換為二值圖像?●BW=im2bw(RGB,level):將RGB圖像轉換為二值圖像?7、?dither?函數通過抖動算法轉換圖像類型?其語法格式為:?
●?x=dither?(RGB,map)?:?通過抖動算法將真彩色圖像RGB按指定的調色板map轉換成索引色圖像X?
●?x=dither(RGB,map,Qm,Qe)?:利用給定的參數Qm,Qe從真彩色
圖像RGB中產生索引色圖像x.Qm對于補色決定各顏色軸的量化位數,Qe決定量化誤差的位數。如果Qe<Qm,則不進行抖動操作。Qm的默認值是5,Qe的默認值是8?
●?BW=dither?(I):將灰度圖像抖動成二值圖像,輸入圖像可以是double?或uint8,如果輸出的圖像是二值圖像或顏色種類不超過256的索引色圖像,則是uint8,否則是double
??設計源代碼:?
%將RGB圖像轉換為索引圖像?
RGB=imread('lily.tif');??????????????????%加載圖像文件格式的圖像lily?[X,map]=rgb2ind(RGB,0.7);?????????%將RGB圖像轉換為索引圖像?figure(1);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(RGB);?????????????????????????????????%顯示RGB圖像?title('RGB圖像');????????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(X,map);??????????????????????????????%顯示索引圖像?title('索引圖像');????????????????????????????????%顯示圖像標題
%將索引圖像轉換為RGB圖像
load?trees???????????????????????????????????%加載圖像trees?
RGB=ind2rgb(X,map);?????????????%將索引圖像轉換為RGB圖像?figure(2);????????????????????????????????%選擇圖像輸出的窗口?
subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置????????????????????????????????????imshow(X,map);???????????????????????????????%顯示索引圖像?title('索引圖像');???????????????????????????????%顯示圖像標題?subplot(1,2,2);??????????????????????????%選擇圖像輸出的位置?imshow(RGB);??????????????????????????????????%顯示RGB圖像?title('RGB圖像');???????????????????????????????%顯示圖像標題
%將RGB圖像轉換為灰度圖像?
map=rgb2gray(RGB);???????????????%將RGB圖像轉換為灰度圖像?figure(3);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(RGB);??????????????????????????????????%顯示RGB圖像?title('RGB圖像');??????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(map);?????????????????????????????%顯示灰度圖像?title('灰度圖像');???????????????????????????????%顯示圖像標題
%將灰度圖像轉換為索引圖像?
I=imread('rice.tif');????????????????????%加載圖像文件格式的圖像rice?[X,map]=gray2ind(I,80);???????????%將灰度圖像轉換為索引圖像?figure(4);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(I);???????????????????????????????????%顯示灰度圖像?title('灰度圖像');?????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(X,map);?????????????????????????????%顯示索引圖像?title('索引圖像');????????????????????????????%顯示圖像標題
%將索引圖像轉換為灰度圖像?
load?trees???????????????????????????????????????%加載圖像trees?
I=ind2gray(X,map)???????????????????%將索引圖像轉換為灰度圖像?figure(5);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(X,map);??????????????????????????%選擇圖像輸出的位置?title('索引圖像');????????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(I);?????????????????????????????????????%顯示灰度圖像??????????????????????????????????????????????????
title('灰度圖像');????????????????????????????????%顯示圖像標題
%將灰度圖像轉換為二值圖像?
I=imread('rice.tif');???????????????%加載圖像文件格式的圖像?rice?
BW=dither(I);??????????????????????%將灰度圖像轉換為二值圖像?figure(6);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(I);????????????????????????????????????%顯示灰度圖像?title('灰度圖像');????????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(BW);??????????????????????????????????%顯示二值圖像?title('二值圖像');????????????????????????????????%顯示圖像標題
%將RGB圖像轉換為二值圖像?
RGB=imread('lily.tif');?????????????????%加載圖像文件格式的圖像lily?BW=im2bw(RGB,0.5);?????????????%將RGB圖像轉換為二值圖像?figure(7);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);???????????????????????????%選擇圖像輸出的位置?imshow(RGB);?????????????????????????????????%顯示RGB圖像?title('RGB圖像');?????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置
imshow(BW);????????????????????????????????%顯示二值圖像?title('二值圖像');????????????????????????????????%顯示圖像標題
%將索引圖像轉換為二值圖像?
load?trees????????????????????????????????????%加載圖像trees??
BW=im2bw?(X,map,0.4);?????????????%將索引圖像轉換為二值圖像??figure(8);????????????????????????????????%選擇圖像輸出的窗口?subplot(1,2,1);??????????????????????????%選擇圖像輸出的位置?imshow(X,map);???????????????????????????????%顯示索引圖像?title('索引圖像');???????????????????????????????%顯示圖像標題?subplot(1,2,2);???????????????????????????%選擇圖像輸出的位置?imshow(BW);??????????????????????????????????%顯示圖像標題?title('二值圖像');?????????????????????????????%顯示二值圖像
對?RGB?圖像?RGB1?的紅、綠、藍調色板分別進行調整。
?
將圖像RGB1中的亮度值映射到RGB2中的新值,
R:0.2~0.6;??G:0.3~0.7;????B:0~1
它們都可以使用空的矩陣[],默認值是[0?1]
?
?
20151028三晚素材:
灰度線性變換:
Fa:對比度
Fb:灰度值
灰度的對數變換:
只能處理double型,但大部分是uint8類型,需先進行類型轉換。
Abs:求整數的絕對值,復數的模
灰度的Gamma變換:
灰度閾值變換及二值化:??????????????????????T為指定閾值
直方圖均衡化
?
圖像易受光照、視角、方位、噪聲等的影響。使得同一類圖像的不同變形體之間的差距有時大于該類圖像與另一類圖像之間的差距,影響圖像識別、分類。圖像歸一化就是將圖像轉換到唯一的標準形式以抵抗各種變換,從而消除同類圖像不同變形體之間的外觀差異。也稱為圖像灰度歸一化。
圖像平移
正:
?
?
反:
?
?
空間域增強:
添加噪聲:為什么不能添加椒鹽噪聲?
函數:h=imnoise(I,type,parameters);
Parameters:參數
Filter:濾波器:http://www.doc88.com/p-901960468556.html?
?
?
?
?
積分:平滑
微分:銳化
Filter:濾波器
?
?
?
?
濾波器設計
?
?
?
?
?parameters為可選項,是和所選定的濾波器類型type相關的
配置參數,如尺寸和標準差等。
type為濾波器的類型。其合法值如下
| 合法取值 | 功能 |
| ‘average’ | 平均模板 |
| ‘disk’ | 圓形領域的平均模板 |
| ‘gaussian’ | 高斯模板 |
| ‘laplacian’ | 拉普拉斯模板 |
| ‘log’ | 高斯-拉普拉斯模板 |
| ‘prewitt’ | Prewitt水平邊緣檢測算子 |
| ‘sobel’ | Sobel水平邊緣檢測算子 |
| ? | ? |
?
?
頻率域圖像增強:
幅度譜
相位譜
?
?
功率譜
?
彩色圖像處理:
?
?
?
HIS模型是從人的視覺系統出發,直接使用顏色三要素色調(Hue)、飽和度(Saturation)和亮度(Intensity)來描述顏色。
色調:????????????????????其中
?
?
飽和度、;
強度:
形態學處理;
總結
以上是生活随笔為你收集整理的matlab中的图像类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些重要的标准数组
- 下一篇: matlab的维纳滤波函数用法_MATL