1. 程式人生 > >matlab的基本用法---關於對影象的處理

matlab的基本用法---關於對影象的處理

matlab的基本用法一關於對影象的處理

原文
1. 讀取影象:用imread函式讀取影象檔案,檔案格式可以是TIFF、JPEG、GIF、BMP、PNG等

    %讀取指定路徑下的圖片,並儲存成一個影象矩陣
    imageMatrix= imread('C:\Users\AA\Pictures\traceImg.jpg'); 
    %一般情況下,影象矩陣比較大,因此可直接對imageMatrix經行處理
    %disp(imageMatrix);

2. 影象處理

f=rgb2gray(imageMatrix); %將彩色圖轉換成灰度圖
[M,N]=size(f); %檢視影象畫素大小
whos f; %檢視變數f的各個屬性
imshow(f); %顯示影象,引數是影象矩陣
%imshow()還有一個引數
%影象上所有小於等於100的數值都會顯示成黑色,所有大於等於200的數值都會顯示成白色
%figure的作用是同時顯示多張影象,即不會覆蓋之前的影象
figure,imshow(f,[100 200]);

3.寫入影象
寫入影象使用imwrite()函式。
檔名必須包括指明格式的副檔名。也可以增加第三個引數,顯式指明檔案的格式
如:

%在檔名中指明瞭影象格式
imwrite(f,'filename')  --->  imwrite(imageMatrix,'traceImg.jpg')
%在檔名中沒有指明格式(這是不可以的),雖然增加第三個引數,顯式指明影象格式
%但是寫入的不是圖片
imwrite(f,'filename','format') ---> imwrite(imageMatrix,'traceImg','jpg') %這是錯誤的
imwrite(f,'filename','format') ---> imwrite(imageMatrix,'traceImg.jpg','jpg') %這是正確的
%在filename中也可以指定寫入圖片的路徑,如:
imwrite(imageMatrix,'C:\Users\AA\Pictures\traceImg.jpg')

還可以有其他引數,如質量引數:

%q是0到100之間的一個整數。對比不同質量的影象效果。
imwrite(f, 'filename.jpg', 'quality', q);

4.其它1
獲取影象資訊:

% imfinfo(FILENAME,FMT)
% returns a structure whose
    fields contain information about an image in a graphics
    file.  FILENAME is a string that specifies the name of the
    graphics file, and FMT is a string that specifies the format
    of the file.
 %Fields of the structure includes Filename,FileModDate,FileSize,Format,FormatVersion
    Width,Height,BitDepth,ColorType 
K=imfinfo('C:\Users\AA\Pictures\traceImg.jpg'); %將影象的資訊儲存在變數K中
image_bytes = K.Width * K.Height * K.BitDepth / 8;
compressed_btyes = K.FileSize;
compression_ratio = image_bytes / compressed_bytes

5.其它2
1.由於影象轉換成了影象矩陣,所以對矩陣的操作也可以平移到對影象矩陣的操作。
2.影象處理工具包還提供其他一些算術運算:
  imadd 兩個影象相加,或者一個影象加上一個常量
  imsubstract 兩個影象相減,或者一個影象減掉一個常量
  immultiply 兩個影象相乘,或者一個影象乘上一個常量
  imdivide 兩個影象相除,或者一個影象除以一個常量
  imabsdiff 兩個影象的差的絕對值
  imcomplement 求一個影象的反色圖
  inlincomb 求一組影象的線性組合
 以上這些函式的引數都是矩陣或者常數形式,返回值也是一個矩陣。
 如:

imageMatrixOne=imread('C:\Users\AA\Pictures\traceImg.jpg'); %矩陣
imageMatrixTwo=imread('C:\Users\AA\Pictures\007.jpg');  %矩陣
imshow(imageMatrixOne(100:300,100:300)); %子圖
imshow(imadd(imageMatrixTwo,102));  %圖加常量
imshow(imcomplement(imageMatrixOne));  %反色圖

3.影象就相當於一個矩陣,所以對影象處理可以理解成對一個矩陣的處理,在此基礎上,我們可以提取一個影象的子圖或者計算一個影象畫素的平均直等等。在這裡由於篇幅原因,僅僅寫出基本的關於影象的用法,更多其他應用還需查閱相關文件。