Matlab繪圖基礎——圖形繪制的插值  以及 圖像大小的重采樣


使用說明:圖形繪制時的插值

interp1   %1-D data interpolation
interpft  %使用fft算法插值
    %將原數據x轉換到頻率域,再逆轉換回來更密集的數據采樣點
spline    %一維Cubic spline(三次樣條) data interpolation
interp2   %2-D data interpolation
interp3   %3-D data interpolation (table lookup)
注: The  interp2  command interpolates between data points. It finds values of a two-dimensional function  f ( x , y ) underlying the data at intermediate points.

案例1:二維插值顯示

[X,Y] =meshgrid(-3:.25:3);Z=peaks(X,Y);     %間隔為0.25
[XI,YI]=meshgrid(-3:.33:3,-3:0.05:3);          %XI間隔為0.33,YI間隔為0.05
ZI=interp2(X,Y,Z,XI,YI,'cubic');
                 %設定插值使用的算法。其他選項還有'nearest','linear,'spline'
mesh(X,Y,Z), hold on;axis([-3 3 -3 3 -5 20]);
mesh(XI,YI,ZI+15),hold off;   %繪制插值算得的圖形
 
案例2:圖像大小的重采樣
M = imread('rice.png'); 
%% 使用插值的方法對圖像進行重采樣
% the original image
[p,q] = size(M);
figure;imshow(M);title('Original Image')
% original location
[X,Y] = meshgrid( (0:p-1)/(p-1), (0:q-1)/(q-1) );
 
% target image size
p1 = 100; q1 = 100;
% new sampling location
[XI,YI] = meshgrid( (0:p1-1)/(p1-1) , (0:q1-1)/(q1-1) );
% the new image 插值方法可以自己更改
M1 = interp2( X,Y,double(M), XI,YI ,'cubic');  % 注意這里的M原本是unit8類型的數據,這里必須轉化為double類型的數據
figure;imshow(M1,[0,255]);title('Resized Image')  % 這里用imshow顯示double類型的圖像時要指定顯示范圍[0,255]
 
%% 簡潔方法(IPT工具箱)
figure;imshow(M);title('Original Image')
% 重采樣
p1 = 100; q1 = 100;
M1 = imresize(M,[p1,q1]);
figure;imshow(M1);title('Resized Image')

 
%案例3:已知點不是規則的的網格點,是無規則的TIN模型,如何插值獲得規則網格點上數據
慢慢更新。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM