MATLAB中load和imread的區別

load是導入文件,一般從mat文件中
imread是圖像處理工具箱的庫函數,處理圖像比較方便
Load 命令
  命令                                                 功能 
  load Filename                                 將名爲Filename的MAT文件中的所有變量加載到工作空間中
  load Filename x y z                         將名爲Filename的MAT文件中的x、y、z等指定變量加載到工作空間中
  load Filename -regexp pat1 pat2    將名爲Filename的MAT文件中符合表達式要求的變量加載到工作空間中
  load Filename x y z  -ASCII             將名爲Filename的8位ASCII文件中的x、y、z等指定變量加載到工作空間中
load 是讀取matalab本身附帶的索引圖(具體路徑是C:\MATLAB2009\toolbox\wavelet\wavedemo);而imread是讀取你自己的圖片(也就是你電腦上的圖)
imread
該函數用於讀取圖片文件中的數據。在matlab的命令窗口中輸入doc imread或者help imread即可獲得該函數的幫助信息。
matlab的imread很強大,一個命令可以讀取各種類型的圖像。但是imread並不是一個實際功能函數。不同的圖像格式有不同的編碼方式,因此有不同的讀取方式。實際上,爲每種不同格式的圖像編寫各自的讀取函數是適當的,實際中也是這麼做的。
matlab就是這樣的,imread只是一個入口函數。它僅僅是做了一些文件名的處理,從你的文件名中,找到絕對路徑,找到圖像後綴名,然後調用合適的讀取函數。
比如你打開\toolbox\matlab\imagesci\private文件夾會看到很多諸如readjpg.m,readtif.m的文件。這些纔是不同格式圖片讀取的真正函數,但是!這些函數也不是實際功能函數!你打開這些m函數就可以看到裏面其實很簡單。它們所做的事情和imread差不多。也是調用了一些別的函數。比如readjpg.m裏的實際讀取函數是rjpg8c rjpg16c 這些。你會發現這些文件也存在於上面所說的這個文件夾中,但是它們的後綴名不是.m,而是.mexw32(.mexw64 for 64bit),這些實際功能函數並不是用matlab編寫的,而是用C編寫的,它們是經過編譯的文件,不是文本文件。matlab只是調用他們而已。
也就是說實際上matlab讀取圖像也是調用了C語言編寫的代碼。而且不同格式的圖像有不同的代碼。imread只不過是個入口函數而已。
這種結構在matlab裏非常非常非常常見。
管中窺豹,可見一斑,看來matlab高級語言得以應用也是建立在C語言的架構之上的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章