关于matlab的图像显示方法
關于圖像的數字表示
圖像從色彩和主要分成灰度圖像和彩色圖像,我的題目是對灰度圖像的處理,灰度圖像可以用三基色表示參數的二維數組進行表示,對于標準的長方形點陣取樣每一個元素表示一個圖像像素點的顏色信息,圖片文件一般來說就是按照數二維組排列構成文件,然后在matlab中使用imread進行讀取并處理。
目前已經測試過的imread支持的格式有BMP、PNG、TIF、JPG
考慮之后方便C語言實現就只對BMP格式進行深入學習
BMP格式(Bitmap)
BMP是windows操作系統中的標準圖像文件格式,特點是包含的信息比較豐富,是無損失的圖像文件格式,其投頭的格式為:
| 0000H | 文件標識 | 2 | 識別位圖的類型 |
| 0002H | File Size | 4 | 表示文件的大小,單位是B |
| 0006H | Reserved | 4 | 保留信息,用處目前不明只知道必須為0 |
| 000AH | Bitmao Data Offset | 4 | 從文件開始到位圖數據之間的偏移量 |
| 000EH | Bitmap Header Size | 4 | 位圖的信息頭的長度,一般是28H |
| 0012H | Width | 4 | 位圖的寬度,單位是像素 |
| 0016H | Height | 4 | 位圖的高度,單位是像素 |
| 001AH | Planes | 4 | 位圖的位面數,肯定是1 |
| 001CH | Bit per pixel | 2 | 每個像素的位數,1\4\8\16\24\32,分別表示2的N次方的色位,單色圖像默認為1,即只有黑白 |
| 001EH | Comression | 4 | 壓縮說明,0:不壓縮;1:使用8位RLE壓縮方式;2:使用4位RLE壓縮方式;3:Bitfields-位域存放方式 |
| 0022H | Bitmap Data SIze | 4 | 用字節數字表示的位圖數據的大小,必須是4的倍數 |
| 0026H | HResolution | 4 | 用像素表示水平分辨率 |
| 002AH | VResolution | 4 | 用像素表示垂直分辨率 |
| 002EH | Colors | 4 | 位圖使用的顏色數 |
| 0032H | Important Colors | 4 | 指定的重要的顏色數,當數值等于Colors的數值的時候表示所有顏色一樣重要 |
| ____H | Palette | N*4 | 調色板規范,四個字節分別用來描述藍色、綠色、紅色和填充符的數值,在彩色圖像的處理中就是各個通道的作用 |
| ____H | Bitmap Data | – | 包含掃描的信息,掃描順序是從右向左,從上到下 |
亮度圖像
亮度圖像是一個二維數組矩陣,數據類型可以是double、uint8、uint16類型,范圍分別是[0,1]、[0,255]、[0,65535],風別代表著二值圖像、8位RGB圖像、16位RGB圖像,對于二值圖像就應該用double數據類型讀取數組。
關于MATLAB中文件的讀取和輸出
imread
MATLAB中主要使用imread函數從圖片中讀取圖像信息使用方法為:
[a,map]=imread['文件名']對于BMP格式的圖片,低于24b的圖片讀取的是索引圖像,24b的BMP格式讀取的是RGB圖像,32b讀取的是24b的RGB圖像和8b的填充數據。
對于灰度圖像可以用
(正在嘗試使用)
imwrite
MATLAB提供了imwrite來對舉證組成的圖像文件進行保存,調用方式為:
imwrite(A,文件名,格式)格式可以省略,直接加在文件名后,表示灰度圖像時A表示二維舉證,當圖像為真彩RGB圖像時,A是MN3的舉證,與imread相對應的,imwrite也可以保存為讀取相同的格式,這里嘗試了.bmp,.jpg,.png,.tif格式可正常運行。
imshow和image
使用方法:
imshow(I)I的要求與imwrite使用的要求一樣,直接使用imshow可以顯示出真實尺寸的圖片,像素與物理顯示器的像素對應。
可以使用figure,imshow(X,'berder','tight');屬性控制去掉窗口的邊框。
而image函數則是附帶坐標的圖像函數顯示,對于位圖現實的就是像素點數量
其他
參考教程找到了一段直線檢測的代碼:
clc,close BW=imread('test_1.tif'); BW=rgb2gray(BW); thresh=[0.01,0.17]; sigma=2;%定義高斯參數 f = edge(double(BW),'canny',thresh,sigma); figure(1),imshow(f,[]); title('canny 邊緣檢測'); [H, theta, rho]= hough(f,'RhoResolution', 0.5); %imshow(theta,rho,H,[],'notruesize'),axis on,axis normal %xlabel('\theta'),ylabel('rho'); peak=houghpeaks(H,5); hold on lines=houghlines(f,theta,rho,peak); figure,imshow(f,[]),title('Hough Transform Detect Result'),hold on for k=1:length(lines) xy=[lines(k).point1;lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',4,'Color',[.6 .6 .6]); end效果如下:
正在理解各個函數的作用。
總結
以上是生活随笔為你收集整理的关于matlab的图像显示方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【控制理论】离散及连续的LQR控制算法原
- 下一篇: AxureUX 复制Iconfont图标