主要内容

用网格插值重新采样图像

这个例子展示了如何使用griddedInterpolant重新采样图像中的像素。对图像重新采样对于调整分辨率和大小很有用,你也可以使用它来平滑缩放后的像素。

加载图片

加载并显示图像ngc6543a.jpg这是哈勃太空望远镜拍摄的行星状星云ngc6543。这幅图像显示了一些有趣的结构,如同心气体壳,高速气体喷射,和不寻常的气体节。矩阵一个表示图像的是一个650 × 600 × 3的矩阵uint8整数。

一个= imread (“ngc6543a.jpg”);imshow (A)

图中包含一个轴。轴包含一个图像类型的对象。

创建Interpolant

为图像创建一个网格插值对象。griddedInterpolant只适用于双精度和单精度矩阵,所以转换uint8矩阵.为了插值图像的每个RGB通道,指定两个网格向量来描述前两个维度上的采样点。网格向量作为单元格数组中的列向量组合在一起{xg1, xg2,…,xgN}.有了这个配方,griddedInterpolant将3-D矩阵视为包含在同一网格上定义的多个2-D数据集。

深圳=大小(A);xg = 1:深圳(1);yg = 1:深圳(2);F = griddedInterpolant ({xg, yg},双(A));

重新取样图像像素

使用前两个矩阵的尺寸重新采样图像,使其大小为120%。也就是说,对于原始图像中的每5个像素,插值后的图像有6个像素。用语法计算查询点上的插值F ({xq, yq})griddedInterpolant在查询点计算3d图像中的每个页面。

xq =(0:5/6:深圳(1)';yq =(0:5/6:深圳(2))';vq = uint8 (F ({xq, yq}));imshow (vq)标题(高分辨率的

图中包含一个轴。标题为“更高分辨率”的轴包含图像类型的对象。

类似地,通过查询比原始图像少55%的点的插值来减小图像的大小。虽然您可以简单地对原始图像矩阵进行索引以产生较低分辨率的图像,但插值使您能够在非整数像素位置重新采样图像。

xq =(0:1.55:深圳(1)';yq =(0:1.55:深圳(2))';vq = uint8 (F ({xq, yq}));图imshow (vq)标题(低分辨率的

图中包含一个轴。标题为“低分辨率”的轴包含图像类型的对象。

平滑变焦工件

当你放大图像时,感兴趣区域的像素会变得更大,图像中的细节很快就会丢失。您可以使用图像重采样来平滑这些缩放工件。

放大原始图像中心的亮点。(索引一个就是把这个亮点放在图像的中心,这样后续的缩放就不会把它推出帧。)

imshow ((1:570 10:600,:)“InitialMagnification”“健康”)变焦(10)标题(“原图,10倍放大”

图中包含一个轴。标题为Original Image, 10x Zoom的轴包含一个类型为Image的对象。

查询interpolantF以更高10倍的分辨率复制这张放大的图像(大约)。比较几种不同插值方法的结果。

xq =(1:0.1:深圳(1)';yq =(1:0.1:深圳(2))';F.Method =“线性”;vq = uint8 (F ({xq, yq}));imshow (vq (1:5700 150:5900,:),“InitialMagnification”“健康”)变焦(10)标题(的线性方法

图中包含一个轴。带有线性方法的轴包含一个图像类型的对象。

F.Method =“立方”;vq = uint8 (F ({xq, yq}));imshow (vq (1:5700 150:5900,:),“InitialMagnification”“健康”)变焦(10)标题(“立方方法”

图中包含一个轴。标题为Cubic方法的轴包含一个类型为图像的对象。

F.Method =样条的;vq = uint8 (F ({xq, yq}));imshow (vq (1:5700 150:5900,:),“InitialMagnification”“健康”)变焦(10)标题(“样条方法”

图中包含一个轴。标题样条方法的轴包含一个类型为图像的对象。

另请参阅

|

相关的话题