Matlab圖像處理基礎知識
Matlab的圖片以矩陣的形式存儲,矩陣的行列值為圖片的行列的色彩值。
1圖像表達方式:
- 像素索引
圖像被視為離散單元。如使用I(2,2)可以獲取第二行第二列的像素值
- 空間位置:
使用連續值,數據存儲位置為坐標中點,存儲位置可以非默認
A=magic(5); x=[19.5,23.5]; y=[8.0,12.0]; image(A,'XData',x,'YData',y),axis image,colormap(jet(25)) %image('XData',x,'YData',y,'CData',C) x,y指定橫縱坐標,C為每個x,y坐標點的顏色值 %axis 設置坐標軸 %colormap 查看並設置當前顏色圖 %jet 25是條目數,將RGB顏色方案平分成25種顏色
2Malatb圖像類型:
二進制圖
像素的取值只有0和1,分別代表黑與白。
索引圖(偽彩色)
索引圖中某一像素的值代表調色板中能代表絕大多數的255中顏色之一,調色板大小為256×3。假如索引值為5,那么使用調色板第五行的三個數值代表顏色。
灰度圖
灰度圖中某一像素的值從0-255代表從黑到白的255種顏色層次。只能表現為灰色圖像。
RGB圖(真彩色)
在matlab中為n×m×3的多維數組,n,m,分別代表像素位置,第三維的三個數字代表RGB顏色的值。
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]); R=RGB(:,:,1); G=RGB(:,:,2); B=RGB(:,:,3); figure subplot(141);imshow(R) subplot(142);imshow(G) subplot(143);imshow(B) subplot(144);imshow(RGB) %reshape:重構數組,將jet(64)中的RGB顏色分離,此時的RGB參數中存儲着64中顏色的RGB值 %此時的RGB中第三維的第1,2,3個數字代表R,G,B數值
3Matlab圖像類型轉換:
圖像顏色篩選轉換
X=dither(RGB,map):通過篩選算法將真彩色圖像RGB按指定的顏色圖map轉換成索引色圖像X
X = dither(RGB,map,Qm,Qe) 還指定要沿每個顏色軸為逆向顏色圖使用的量化位數 Qm,以及用於顏色空間誤差計算的量化位數 Qe。
BW = dither(I) 通過抖動將灰度圖像 I 轉換為二值(黑白)圖像 BW。
asahi=imread('asahi.jpg'); imshow(asahi) %map=jet(255); %asahi_dither=dither(asahi,map); %imshow(asahi_dither)
原圖:
篩選轉換
asahi=imread('asahi.jpg'); %imshow(asahi) map=jet(255); asahi_dither=dither(asahi,map); imshow(asahi_dither)
灰度圖轉換為索引圖:
[X,map]=gray2ind(I,n): 根據指定灰度級數n和顏色圖map轉換成灰度圖X,n默認值為64
索引圖轉換為灰度圖:
I=ind2gray(X,map):將索引圖X轉換成灰度圖I,丟棄圖像色度和飽和度,僅保留亮度信息。
RGB圖轉換成灰度圖:
X=imread('asahi.jpg'); imshow(rgb2gray(X))
RGB圖轉換成索引圖:
[X,cmap] = rgb2ind(RGB,Q) 使用具有 Q 種量化顏色的最小方差量化法並加入抖動,將 RGB 圖像轉換為索引圖像 X,關聯顏色圖為 cmap。
[X,cmap] = rgb2ind(RGB,tol) 使用均勻量化法並加入抖動,將 RGB 圖像轉換為索引圖像,容差為 tol。
X = rgb2ind(RGB,inmap) 使用逆顏色圖算法並加入抖動,將 RGB 圖像轉換為索引圖像,指定的顏色圖為 inmap。
___ = rgb2ind(___,dithering) 啟用或禁用抖動。
[Y,map]=rgb2ind(imread('asahi.jpg'),12); figure imagesc(Y) colormap(map) imshow(Y,map)
索引圖轉換成RGB圖:
RGB=ind2rgb(X,map):將矩陣X及相應的調色板map轉換成真彩色圖像RGB
閾值法從灰度圖產生索引圖:
X=grayslice(I,n):將灰度圖均勻量化為n個等級,轉換成偽彩色圖像X
將矩陣轉換成灰度圖像:
mat2gray函數
I=mat2gray(X,[Xmin,Xmax]):指定區間Xmin-Xmax代表灰度0-1