Matlab二维插值

Matlab二维插值

interp2函数 (网格节点)

Y=interp2(x,y,z,xi,yi,‘method’);

method

  1. nearest 最邻近插值
  2. linear(默认) 双线性插值
  3. cubic 双三次插值
    示例如下:

例:已知平板表面3*5的网格处的温度值为

82    79    84
81    63    84
80    61    82
82    65    85
84    81    86

做出平板表面温度分布曲面,在x,y方向上每隔0.2个单位进行插值,画出插值后的图形。

clc;clear;
x=1:3;
y=1:5;
temps=[82    79    84
    81    63    84
    80    61    82
    82    65    85
    84    81    86]
[x,y]=meshgrid(x,y);
figure(1);
mesh(x,y,temps);
xlabel('x');
ylabel('y');

figure(2);
xi=1:0.2:3;
yi=1:0.2:5;
[xi,yi]=meshgrid(xi,yi);
zi=interp2(x,y,temps,xi,yi,'cubic');
mesh(xi,yi,zi);
xlabel('x');
ylabel('y');

griddata函数 (散点数据)

z=griddata(x,y,z,xi,yi,‘method’);

method如下:

  1. nearest 不连续
  2. linear(默认) 连续不可导
  3. cubic 连续且可导
  4. V4

1、2、3、4图像光滑性递增

处理图像(补全)

灰度图

原图如下:
Matlab二维插值_第1张图片

处理过后的图片:
Matlab二维插值_第2张图片

代码如下:

A=imread('lena.jpg'); % 读取图像数据,并赋值给A
figure(1);
imshow(A);%显示原图

Rand=rand(256,256,3)>0.8 | rand(256,256,3)<0.2 ; %随机生成256*256*3的数组,并确定其值大于0.8,后者小于0.2的位置信息。
B=uint8(A).*uint8(Rand); %选取部分数据,并赋值给B
%imshow(B);%显示图像

T = B(:,:,1);%灰度图
[m,n]=size(T);
X1=1:m;
Y1=1:n;
X2 = 1:.1:m;
Y2 = 1:.1:n;
Y2 = Y2';

figure(2);
[X2,Y2] = meshgrid(X2,Y2);%生成网格矩阵
Z = interp2(X1,Y1,T,X2,Y2,'nearest');%插值
imshow(Z)%插值后的图

其他关于图像处理转载大佬文章如下:
https://blog.csdn.net/qq_42771692/article/details/99617861
最后
可以点一下左下角咩?有惊喜哦

你可能感兴趣的:(Matlab,matlab,图像识别)