Matlab 簡單圖像處理

一胰蝠、圖像處理的基本操作

1.從圖形文件讀取圖像

pic = imread('C:\Users\Good\Pictures\m.jpg');

通過 matlab 自帶的 imread 讀入圖像旅东,函數(shù)內(nèi)為圖像的路徑。如果圖片在當(dāng)前文件夾下檩淋,可以通過圖片名直接導(dǎo)入。pic = imread('m.jpg');

2.顯示圖像

imshow(pic);

通過上面的簡單操作萄金,我們已經(jīng)可以在 matlab 中讀入圖像文件蟀悦,并顯示出來。接下來我們要對圖像本身的一些問題進(jìn)行原理性的講述氧敢。

二日戈、關(guān)于圖像

1.光的三基色

(1) 學(xué)過高中物理的我們都聽說過 “光的三基色”,光的三基色孙乖,就是光的三種基礎(chǔ)顏色(R 紅色浙炼、G 綠色、B 藍(lán)色)的圆,不可以通過其他顏色混合得到鼓拧。但我們卻可以通過將這三種顏色混合獲得自然界中絕大部分顏色。

(2) 在 matlab 中越妈,顏色的表示就是通過顯示 RGB 相應(yīng)的數(shù)值來表示顏色季俩。通常情況下,RGB 各有 256 級亮度梅掠,用數(shù)字表示為從 0酌住、1、2… 直到 255阎抒,共 256 級酪我。每個基色分量直接決定顯示設(shè)備的基色強(qiáng)度。

imfinfo('C:\Users\Good\Pictures\m.jpg') %獲取圖像文件的信息
size(pic)
圖像文件信息

可以看出圖像在 matlab 中就是一個 Height ? Width ? 3 的一個 uint8 類型的矩陣且叁,其中 Height都哭、Width 是圖像的大小,也就是像素點。一個個像素點上其中 3 即為 RGB 的三個數(shù)值欺矫,用來表示該像素點的顏色纱新,通過像素點的坐標(biāo)來定位到像素點。

R = pic(:,:,1);
G = pic(:,:,2);
B = pic(:,:,3);
圖像中的像素點

2.灰度圖像

灰度是描述灰度圖像內(nèi)容的最直接的視覺特征穆趴。它指黑白圖像中點的顏色深度脸爱,范圍一般從 0 到 255,白色為 255未妹,黑色為 0簿废,故黑白圖像也稱灰度圖像÷缢灰度圖像矩陣元素的取值通常為 [0,255]族檬,因此其數(shù)據(jù)類型一般為 8 位無符號整數(shù),這就是人們通常所說的 256 級灰度酪耕。

灰度圖像

3.彩色圖像轉(zhuǎn)化成灰度圖像

rgb2gray是 matlab 的內(nèi)置函數(shù)导梆,用來將 RGB 圖像或顏色圖轉(zhuǎn)換為灰度圖∮厮福灰度圖的圖像矩陣是一個 Height ? Width ? 1 的一個 uint8 類型的矩陣看尼。也就是將三基色RGB的數(shù)值轉(zhuǎn)化為一維的灰度值,便于圖像處理盟步。彩色圖像轉(zhuǎn)換為灰度圖像時藏斩,需要計算圖像中每個像素有效的亮度值,其計算公式為:Y = 0.3R + 0.59G + 0.11B

圖像矩陣
turn_pic = rgb2gray(pic);
pic = double(pic);  %需要轉(zhuǎn)化類型却盘,不然計算結(jié)果可能不同
turn_pic(1,1)
0.3*pic(1,1,1) + 0.59*pic(1,1,2) + 0.11*pic(1,1,3)

4.灰度圖像轉(zhuǎn)化為彩色圖像

將灰度圖像轉(zhuǎn)換為彩色圖像狰域,稱為灰度圖像的偽彩色處理。

偽彩色處理技術(shù)的實現(xiàn)方式有很多黄橘,如:灰度分割法兆览、灰度級-彩色變換法、濾波法等等塞关。以下采用的是灰度級-彩色變換法抬探,這是將來自傳感器的灰度圖像送入三個不同特征的 R、G帆赢、B 變換器小压,然后將三種變換器的不同輸出分別送到彩色顯示器進(jìn)行顯示的技術(shù)。

gray2rgb函數(shù)可以將灰度圖轉(zhuǎn)化為彩色圖椰于,不過需要下載相關(guān)文件怠益,需要的話可以自行搜索,而且執(zhí)行效率很低瘾婿。

映射關(guān)系如下蜻牢,其中 R(x,y)烤咧、G(x,y)、B(x,y) 分別表示 R孩饼、G髓削、B 的顏色值,f(x,y) 表示特定點灰度圖像的灰度值镀娶,f 是所選灰度圖像的灰度值。

5. 二進(jìn)制圖像

二進(jìn)制圖像也稱為二值圖像揪罕,通常用一個二維數(shù)組來描述梯码,1 位表示一個像素,組成圖像的像素值非 0 即 1好啰,沒有中間值轩娶,通常 0 表示黑色,1 表示白色框往。二進(jìn)制圖像一般用來描述文字或者圖形鳄抒,其優(yōu)點是占用空間少,缺點是當(dāng)表示人物或風(fēng)景圖像時只能描述輪廓椰弊。一般我們可以通過設(shè)置閾值來進(jìn)行二進(jìn)制圖像轉(zhuǎn)化许溅,matlab 中可以利用im2bw從灰度、索引秉版、RGB 圖象創(chuàng)建二值圖贤重。

6.索引圖像

索引圖像是一種把像素值直接作為 RGB 調(diào)色板下標(biāo)的圖像。在 Matlab 中清焕,索引圖像包含一個數(shù)據(jù)矩陣 X 和一個顏色映射(調(diào)色板)矩陣 map并蝗。數(shù)據(jù)矩陣可以是 8 位無符號整型、16 位無符號整型或雙精度類型的秸妥」鐾#可以通過以下代碼對索引圖像和 RGB 圖像進(jìn)行轉(zhuǎn)化:

IND = rgb2ind(pic,n);  % pic為RGB圖像矩陣,map為顏色映射矩陣粥惧,最多包含n個顏色键畴。n必須小于或等于 65,536。
RGB = ind2rgb(pic,map);  % pic為索引圖像矩陣影晓,map為顏色映射矩陣

7.小結(jié)

圖像類別 英文名稱 英文縮寫
RGB rgb rgb
灰度 gray gray
索引 index ind
二進(jìn)制 binary bin

2 英文 two 和 to 發(fā)音相同镰吵,所以很多轉(zhuǎn)換類函數(shù)都用 2 來命名而非 to。比如number to string挂签, 不是命名為numTostr而是num2str疤祭。記住英文縮寫,我們就可以靈活使用各種函數(shù)進(jìn)行圖像轉(zhuǎn)換饵婆。

三勺馆、利用插值法對圖像進(jìn)行放大處理

1.二維插值

二維插值是對兩個變量的函數(shù)z = f(x,y)進(jìn)行插值
求解二維插值的基本思路是:

常見的二維插值可以分為兩種:網(wǎng)格結(jié)點插值和散亂數(shù)據(jù)插值。
二維插值處理圖片,可以使放大后的圖片的失真率降低草穆,提升圖片放大后的顯示效果灌灾。

2.插值問題的出錯總結(jié)

pic = imread('C:\Users\Good\Pictures\m.jpg');
turn_pic = rgb2gray(pic);
[m,n] = size(turn_pic);
x0 = 1:m;
y0 = 1:n;
x = 1:0.5:(m+0.5);
y = 1:0.5:(n+0.5);
z = interp2(x0,y0,turn_pic,x,y,'cubic');

錯誤提示

出錯原因:x0, y0, X, Y 都是 double 類型的數(shù)據(jù),但是 turn_pic 是 uint8 類型的數(shù)據(jù)悲柱。
錯誤修改turn_pic = double(turn_pic);
修改后運行

錯誤分析

像這樣的插值問題锋喜,最怕的就是矩陣的 size 不對應(yīng),參照我們插值時可以傳入 meshgrid 生成的網(wǎng)格數(shù)據(jù)豌鸡,我們不難知道嘿般,interp2 的插值方式,內(nèi)部會自己利用 meshgrid 方式處理傳入的數(shù)據(jù)涯冠。但我們知道 meshgrid 方式生成的網(wǎng)格數(shù)組與原數(shù)據(jù)矩陣 size 相反炉奴,所以要注意這個 size 問題。以代碼為例:

[m,n] = size(turn_pic);
x0 = 1:m;
y0 = 1:n;

傳入的 x0蛇更,x瞻赶,y0,y 分別對應(yīng)的是圖像矩陣的行和列派任,利用 meshgrid 生成的網(wǎng)格面都與 turn_pic 的 size 正好相反砸逊。所以我們初始定義 x,x0 對應(yīng)列吨瞎,y痹兜,y0 對應(yīng)行,這樣就可以避免 size 錯誤颤诀。

正確代碼

pic = imread('C:\Users\Good\Pictures\m.jpg');
turn_pic = rgb2gray(pic);
turn_pic = double(turn_pic);
[m,n] = size(turn_pic);
x0 = 1:n;
y0 = 1:m;
x = 1:0.5:(n+0.5);
y = 1:0.5:(m+0.5);
[X,Y] = meshgrid(x,y);
z = interp2(x0,y0,turn_pic,X,Y,'cubic');
z = uint8(z);
imshow(z);

效果圖

3.網(wǎng)格點數(shù)據(jù)的生成

在 matlab 中字旭,進(jìn)行三維圖像的繪制,一般要構(gòu)造二維的網(wǎng)格面崖叫,再通過二維的網(wǎng)格面對應(yīng) z 值遗淳,繪制出三維的圖像。

一般心傀,我們常用 meshgrid 來構(gòu)建二維的網(wǎng)格面屈暗。

meshgrid:二維和三維網(wǎng)格
用法:[X,Y]=meshgrid(x,y)
另一種用法[X,Y]=meshgrid(x) 這等價于 [X,Y]=meshgrid(x,x)
其中 x 為 n 維向量,y 為 m 維向量脂男,x, y 為 m?n 維的矩陣养叛。它用于產(chǎn)生 “二維變量的網(wǎng)格”。
下面舉例說明:

x = 1:4;
y = 1:3;
[X,Y] = meshgrid(x,y);

ndgrid:N 維空間中的矩形網(wǎng)格

用法:
[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn) 復(fù)制網(wǎng)格向量 x1,x2,...,xn 以生成 n 維滿網(wǎng)格宰翅。
[X1,X2,...,Xn] = ndgrid(xg) 指定對所有維度使用單一網(wǎng)格向量 xg弃甥。您指定的輸出參數(shù)的數(shù)目決定輸出的維度 n。

兩者的區(qū)別與聯(lián)系
ndgrid 支持從 1 維到 n 維汁讼,而 meshgrid 僅僅限制于 2 維和 3 維淆攻。在 2 維以及 3 維中阔墩,兩個函數(shù)的坐標(biāo)輸出是一樣的,[X,Y,Z] = meshgrid(x,y,z) 等效于 [Y,X,Z] = ndgrid(y,x,z)瓶珊,不同的地方在于輸出數(shù)組的形狀不一樣啸箫。例如:x 長度為 m,y 長度為 n伞芹,meshgrid 生成的二維網(wǎng)格 size 為 n?m忘苛,而 ndgrid 為 m?n。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唱较,一起剝皮案震驚了整個濱河市柑土,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绊汹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件料祠,死亡現(xiàn)場離奇詭異累颂,居然都是意外死亡允跑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門获雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人收捣,你說我怎么就攤上這事届案。” “怎么了罢艾?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵楣颠,是天一觀的道長。 經(jīng)常有香客問我咐蚯,道長童漩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任春锋,我火速辦了婚禮矫膨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘期奔。我一直安慰自己侧馅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布呐萌。 她就那樣靜靜地躺著馁痴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搁胆。 梳的紋絲不亂的頭發(fā)上弥搞,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天邮绿,我揣著相機(jī)與錄音,去河邊找鬼攀例。 笑死船逮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粤铭。 我是一名探鬼主播挖胃,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梆惯!你這毒婦竟也來了酱鸭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤垛吗,失蹤者是張志新(化名)和其女友劉穎凹髓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怯屉,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蔚舀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锨络。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赌躺。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羡儿,靈堂內(nèi)的尸體忽然破棺而出礼患,到底是詐尸還是另有隱情,我是刑警寧澤掠归,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布缅叠,位于F島的核電站,受9級特大地震影響拂到,放射性物質(zhì)發(fā)生泄漏痪署。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一兄旬、第九天 我趴在偏房一處隱蔽的房頂上張望狼犯。 院中可真熱鬧,春花似錦领铐、人聲如沸悯森。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢姻。三九已至,卻和暖如春音诈,著一層夾襖步出監(jiān)牢的瞬間幻碱,已是汗流浹背绎狭。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留褥傍,地道東北人儡嘶。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像恍风,于是被迫代替她去往敵國和親蹦狂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容