使用Matlab進行圖像處理

openkk 12年前發布 | 96K 次閱讀 Matlab 圖形/圖像處理

     寫這篇文章的目的并不是為了向大家推薦一款軟件,只是想說明作為一名程序員,只要改變一下思路我們可以在很多地方發揮自己的專業優勢,而不僅僅是通過閑暇之余幫MM殺殺毒,裝裝系統來表現自己的專業和與眾不同;其次,希望通過分享的形式總結自己,如果同時還能對一兩位朋友有點用處的話,那就更加欣慰了。

     說到圖像處理軟件,大部分人第一個想到的就是photoshop,photoshop的強大是毋庸質疑的,而且對于大多數用戶來說photoshop也是 最佳選擇。但對于我們這些整天與代碼打交道的人來說,有個更有效的工具,那就是Matlab。提起Matlab,知道的人可能不是很多,即使用過也多是用 作一種數學工具,但搞圖像研究的人都知道,Matlab在圖像處理上的強大遠遠超過了photoshop。但為什么用的人這么少呢,理由很簡單,沒有可視 化的操作界面,所有的處理都必須通過函數調用來完成。對一般用戶來說,這是一個不可逾越的障礙,但對于程序員來說這根本就不是什么問題。

      在開始介紹如何使用Matlab進行常見的圖像處理之前,幾個問題先說明一下:

      1、Matlab與Photoshop的區別比較類似于Linux與Windows,因此不習慣命令操作的朋友請略過此文。

      2、同所有的軟件一樣,Matlab的使用需要經過一段時間的學習才能熟練掌握,因為沒有可視化的圖形操作界面,很多人可能會認為比較困難。我自己的體驗是,對程序員來說,掌握Matlab最基本的圖像處理所需要的時間絕不會超過學習photoshop的時間,而且一旦掌握了方法你會發現這是一件很爽的事,更重要的是可以利用自己的編程能力做一些“有趣”的事。

      3、Matlab的強大之處在于可以精確的對圖像的每一個區域甚至每一個像素進行操作,而這需要一定圖像處理基礎,這就像玩Linux一樣,如果對內核有一定了解會玩得更加輕松,但請相信我,這遠遠沒有你想的那么困難。     

      下面是Matlab中經常使用的一些圖像處理函數:

       讀取圖像:img=imread('filename'); //支持TIFF,JPEG,GIF,BMP,PNG,XWD等文件格式。

       顯示圖像:imshow(img,G);   //G表示顯示該圖像的灰度級數,如省略則默認為256。

       保存圖片:imwrite(img,'filename');  //不支持GIF格式,其他與imread相同。

       亮度變換:imadjust(img,[low_in,high_in],[low_out,high_out]);  //將low_in至high_in之間的值映射到low_out至high_out之間,low_in以下及high_in以上歸零。

       繪制直方圖:imhist(img);   

       直方圖均衡化:histeq(img,newlevel);   //newlevel表示輸出圖像指定的灰度級數。

       圖像平滑與銳化(空間濾波):w=fspecial('type',parameters);imfilter(img,w);     //這兩個函數結合將變得十分強大,可以實現photoshop里的任意濾鏡。 

       圖像復原:deconvlucy(img,PSF);  //可用于圖像降噪、去模糊等處理。

       以上都是最基本的操作,看起來只是很簡單的幾個函數,但實際上已經包含了不少photoshop里的功能,如photoshop里的濾鏡功能都可以使用 imfilter來實現,更多的功能及使用我會在以后的文章里介紹。如果有朋友想知道如何使用Matlab來實現photoshop里的各種功能,可以在下面留言或給我發消息,我會盡量幫助你。

     

      沒想到這篇文章引來這么多爭議,看來是我沒把意思表達清楚,本來在評論里已經做了一些解釋,但還是有朋友沒有看到,只好在這里特地做一下說明。

      1、這篇文章沒有任何貶低photoshop的意思,我自己就是photoshop的fans,對于photoshop不敢說高手但至少也算只老鳥,而且對photoshop我比一般人有更深刻的理解,它的大多數算法我都認真研究過。

      2、我的本意并不是比較Matlab與Photoshop或者其他圖像處理軟件的優劣,只是想表述一種觀點,作為一名程序員同樣的事情我們可以有不同的做法。在圖像處理方面,Matlab與Photoshop都有自己無法替代的特色,但同時也有不少共通之處,使用Matlab并不表示要放棄Photoshop,這就像你在使用Windows的時候也可以再裝一個Linux,它們并不是矛盾的。你完全可以在享受photoshop便捷操作的同時,體驗到Matlab的不同,甚至利用自己的編程能力,構建出更有特色的工具來。程序員的最主要的工作就是與各種各樣的軟件打交道,如果使用或開發這些軟件的時候我們能想得更多,看得更遠些,是不是會多些機會呢?

 

     3、關于Matlab想多說幾句,下面有朋友評論說Matlab只是用在科學計算上,不適合做圖像處理,這只能說這些朋友對Matlab或是圖像處理并不了解,只要查一下全球最流行的數字圖像處理書籍使用的是什么工具就明白了

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!