matlab二维图像重采样,使用网格插值对图像重采样
加載圖像
加載并顯示圖像 ngc6543a.jpg,這是哈勃太空望遠鏡對行星狀星云 NGC 6543 拍攝的圖像。此圖像顯示了幾個有趣的結構,如同心氣體殼、高速氣體噴射和異常氣體結。表示該圖像的矩陣 A 是 uint8 整數的 650×600×3 矩陣。
A = imread('ngc6543a.jpg');
imshow(A)
創建插值
為該圖像創建一個網格插值對象。對于圖像來說,由于像素具有正整數位置,因此適合使用默認網格。鑒于 griddedInterpolant 只適用于雙精度和單精度矩陣,請將 uint8 矩陣轉換為雙精度。
F = griddedInterpolant(double(A));
對圖像像素重采樣
當使用大量網格點對圖像重采樣時,查詢插值的最佳方法是使用網格向量。網格向量在元胞數組 {xg1,xg2,...,xgN} 中組合為列向量。網格向量是表示查詢點網格的緊湊方式。使用網格向量,griddedInterpolant 不需要形成完整網格即可執行計算。
求出原始矩陣維度的大小,并使用這些維度大小對圖像重采樣,使其大小為原來的 120%。也就是說,對于原始圖像中的每 5 個像素,插值圖像具有 6 個像素。
[sx,sy,sz] = size(A);
xq = (0:5/6:sx)';
yq = (0:5/6:sy)';
zq = (1:sz)';
vq = uint8(F({xq,yq,zq}));
figure
imshow(vq)
title('Higher Resolution')
同樣,可通過查詢比原始圖像少 55% 的點的插值來減小圖像大小。雖然可以直接對原始圖像矩陣進行索引以生成較低分辨率的圖像,但是插值使您能夠在非整數像素位置對圖像重采樣。
xq = (0:1.55:sx)';
yq = (0:1.55:sy)';
zq = (1:sz)';
vq = uint8(F({xq,yq,zq}));
figure
imshow(vq)
title('Lower Resolution')
去除縮放偽影
當您放大圖像時,目標區域中的像素會變得越來越大,并且圖像中的細節很快會丟失。您可以使用圖像重采樣去除這些縮放偽影。
放大原始圖像中心的亮點。(對 A 進行索引是為了使此亮點在圖像中居中,以便后續縮放不會將其推出邊框外)。
imshow(A(1:570,10:600,:),'InitialMagnification','fit')
zoom(10)
title('Original Image, 10x Zoom')
查詢插值 F,以大約 10 倍的分辨率重新生成此縮放圖像。比較幾種不同插值方法的結果。
xq = (1:0.1:sx)';
yq = (1:0.1:sy)';
zq = (1:sz)';
figure
F.Method = 'linear';
vq = uint8(F({xq,yq,zq}));
imshow(vq(1:5700,150:5900,:),'InitialMagnification','fit')
zoom(10)
title('Linear method')
figure
F.Method = 'cubic';
vq = uint8(F({xq,yq,zq}));
imshow(vq(1:5700,150:5900,:),'InitialMagnification','fit')
zoom(10)
title('Cubic method')
figure
F.Method = 'spline';
vq = uint8(F({xq,yq,zq}));
imshow(vq(1:5700,150:5900,:),'InitialMagnification','fit')
zoom(10)
title('Spline method')
總結
以上是生活随笔為你收集整理的matlab二维图像重采样,使用网格插值对图像重采样的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 在线中文姓名生成工具推荐
- 下一篇: WIN10开机启动深度优化超详细万字以上
