1. 程式人生 > >Matlab學習筆記(五)--影象處理

Matlab學習筆記(五)--影象處理

11、影象算術運算

IPT支援的影象算術運算

函式

描述

Imadd

兩幅影象相加或把常數加到影象

Imsubtract

兩幅影象相減或從影象減去常數

Immultiply

兩幅影象相乘,其中相乘是在相應的畫素對間進行,或影象乘以一個常數

Imdivide

兩幅影象相除,其中相除是在相應的畫素方向對間進行的,或影象除以一個常數

Imabsdiff

計算兩幅影象間的絕對差

Imcomplement

對影象求補

Imlincomb

計算兩幅或多幅影象的線性組合

12、製作負片影象

【例一】

f = imread('F:\pictures\Pure girl\3.jpg') ;

A = imadjust(f,[0,1],[1,0]) ;

imshow(A);

【例二】

f = imread('F:\pictures\Pure girl\3.jpg') ;

A =imcomplement(f) ;

imshow(A);

13、繪製直方圖

函式imhist可以用來繪製直方圖,但是僅對灰度影象有用.

常用使用格式:

p = imhist(f);%f為影象矩陣

p = imhist(f,b);

引數b取2時則直方圖中亮度範圍分成兩部分,0~127和128~255,直方圖中有兩個值,h(1)為影象在區間[0 127]內畫素總數,h(2)為影象在區間[128 255]內的畫素總數.b=3則同理將區間[0 255]等分成三部分,分別顯示每個區間中的畫素總數。b的預設值為256.

例:

 

程式碼:

A= imread

('F:\pictures\perfact\29.jpg');

subplot(2,2,1);

imshow(A);

subplot(2,2,2);

imhist(A(:,:,1));

subplot(2,2,3);

imhist(A(:,:,1),128);

subplot(2,2,4);

imhist(A(:,:,1),2);

 

 

14、繪製條形圖

函式bar用來繪製條形圖,使用格式如下:

bar(horz,v,width)

其中v是一個行向量,它包含將繪製的點,horz是一個與v有著相同的維數的向量,它包含水平標度值的增量,width是一個在[0 1]上取值的數.若省略引數horz,則水平軸會從0到length(v)等分若干單位。當width取1,豎條會較明顯,取0則豎條是簡單的垂直線,width的預設值為0.8.

例:

程式碼:

A = imread('F:\pictures\perfact\29.jpg');

B = A(:,:,1);

h = imhist(B);

h1 = h(1:5:256);

horz = 1:5:256 ;

subplot(2,2,1);

bar(horz,h1);

subplot(2,2,2);

bar(h1);

subplot(2,2,3);

bar(h1,0);

subplot(2,2,4);

bar(h1,1);

15、繪製杆圖

使用函式stem可以 繪製莖葉圖,使用格式如下:

stem(horz,v,’color-linestyle-marker’,’fill’)

說明:

  1.          v是一個向量,它包含所需所繪製的點;horz的含義與條形圖中相同;
  2.          引數’color-linestyle-marker’分別表示三個屬性。color指定填充顏色,預設值為black(黑色);linestyle指定線的型別預設值為solid(實線);marker代表標記點的形狀,預設為circle(圓形).當使用’fill’時才會使標記點的顏色為指定的顏色.

例:

A = imread('F:\pictures\perfact\29.jpg');

B = A(:,:,1);

h = imhist(B);

h1 = h(1:5:256);

horz = 1:5:256 ;

subplot(1,2,1);

stem(horz,h1,'fill');

subplot(1,2,2);

K = stem(horz,h1,'fill','--');

set(get(K,'BaseLine'),'LineStyle',':');

set(K,'MarkerFaceColor','red');

set(K,'Marker','square');

axis([0 255 0 15000]);

set(gca,'xtick',[0:50:255]);

set(gca,'ytick',[0:1000:15000]);

16、繪製階梯圖、餅圖及複數向量圖

【例一】:繪製階梯圖

x = 1:1:20 ;

y = x;

stairs(x,y);

【例二】:繪製餅圖及向量圖

subplot(1,2,1);

pie([10,60,35,95]);

title('餅圖');

legend('一季度','二季度','三季度','四季度');

subplot(1,2,2);

compass([7+2.9i,2-3i,-1.5-6i]);

title('相量圖');

17、影象(R,G,B)分量的選取

fid = imread('F:\pictures\Pure girl\6.jpg');

subplot(2,2,1);

imshow(fid);

N = 520 ;

fid = imresize(fid,[N N]);

subplot(2,2,2);

%影象僅保留(R,G,B)紅色分量

A1 = fid;

A1(:,:,2)= 0;%去掉綠色

A1(:,:,3)= 0;%去掉藍色

imshow(A1);

 

subplot(2,2,3);

%影象僅保留(R,G,B)綠色分量

A2 = fid;

A2(:,:,1)= 0;%去掉紅色

A2(:,:,3)= 0;

imshow(A2);

 

subplot(2,2,4);

%影象僅保留(R,G,B)藍色分量

A3 = fid;

A3(:,:,1)= 0;%去掉紅色

A3(:,:,2)= 0;

imshow(A3);

18、儲存螢幕繪製的圖形

 

x=-2*pi:0.1:2*pi;

y=sin(x)+cos(x).^2;

plot(x,y,'r.');

h=getframe(gcf);%獲取螢幕上繪製的圖形

h=frame2im(h);%將獲取的圖形轉換成影象

imwrite(h,'tt.jpg');%儲存影象

19、繪圖視窗顯示數學公式

 

h = text('units','inch', 'position',[.3 .8], ...

    'fontsize',14, 'interpreter','latex', 'string',...

    ['$$\left[ {\matrix{\cos(\phi) & -\sin(\phi) \cr'...

    '\sin(\phi) & \cos(\phi) \cr}} \right]'...

'\left[ \matrix{x \cr y} \right]$$']);