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’)
說明:
- v是一個向量,它包含所需所繪製的點;horz的含義與條形圖中相同;
- 引數’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]$$']);
|