图像比例缩放-基于等间隔采样(附加MATLAB程序)

图像比例缩放-基于等间隔采样(附加MATLAB程序)

图像的比例缩放是指将给定的图像在 x x x轴方向按比例缩放 f x f_x fx倍,在 y y y轴方向按比例缩放 f y f_y fy倍。
在计算机图形中,每一个节点储存的是该节点的坐标 ( x , y ) (x,y) (x,y),各节点以一定的规律连接之后便构成了相应的形状。对于每一个节点,可对其进行比例缩放。比例缩放前后两点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) P ( x , y ) P(x,y) P(x,y)之间的关系用矩阵表示为:
[ x y 1 ] = [ f x 0 0 0 f y 0 0 0 0 ] [ x 0 y 0 1 ] \begin{bmatrix} x\\ y \\ 1 \end{bmatrix}=\begin{bmatrix} f_x & 0 &0 \\ 0& f_y& 0\\ 0& 0 & 0 \end{bmatrix}\begin{bmatrix} x_0\\ y_0 \\ 1 \end{bmatrix} xy1=fx000fy0000x0y01
在这里插入图片描述

然而对于数字图像来说,矩阵中储存的并不是其节点坐标信息,而是其灰度信息,于是从数码技术上,图像的缩小是通过减少像素个数来实现,因此,需要根据所期望缩小的尺寸数据,从原图像中选择合适的像素点,使图像缩小之后可以尽可能保持原有图像的概貌不丢失。

(1)基于等间隔采样的图像缩小方法

这种图像缩小方法的设计思想是 :通过对图像像素均匀采样来保持所选择到的像素可以保持原像素的概貌特征。假设原图 F ( i , j ) F(i,j) F(i,j),大小为 M ∗ N M*N MN
该方法的实现步骤:

(1)选择缩放比 K 1 , K 2 K_1,K_2 K1,K2,则缩放后的图像 G ( i , j ) G(i,j) G(i,j) K 1 M ∗ K 2 N K_1M*K_2N K1MK2N
(2)采样间隔为 Δ i = 1 / K 1 , Δ j = 1 / K 2 \Delta i=1/K_1,\Delta j=1/K_2 Δi=1/K1,Δj=1/K2
(3) G ( i , j ) = F ( Δ i ∗ i , Δ j ∗ j ) G(i,j)=F(\Delta i*i,\Delta j*j) G(i,j)=F(Δii,Δjj)
小数均四舍五入取整。
一个例子,设原图像大小为 4 × 6 4\times 6 4×6
F = [ f 11 f 12 f 13 f 14 f 15 f 16 f 21 f 22 f 23 f 24 f 25 f 26 f 31 f 32 f 33 f 34 f 35 f 36 f 41 f 42 f 43 f 44 f 45 f 46 ] F=\begin{bmatrix} f_{11} & f_{12} & f_{13}& f_{14}& f_{15}& f_{16}\\ f_{21}& f_{22} & f_{23}& f_{24} & f_{25}& f_{26}\\ f_{31} & f_{32} & f_{33}& f_{34} &f_{35} & f_{36}\\ f_{41}& f_{42} & f_{43} & f_{44}& f_{45} & f_{46} \end{bmatrix} F=f11f21f31f41f12f22f32f42f13f23f33f43f14f24f34f44f15f25f35f45f16f26f36f46

设缩放比例为 K 1 = 0.7 , K 2 = 0.6 K_1=0.7,K_2=0.6 K1=0.7,K2=0.6,经四舍五入缩小后的图像大小为 3 × 4 3\times 4 3×4,计算 Δ i = 1 / K 1 = 1.4 , Δ j = 1 / K 2 = 1.7 \Delta i=1/K_1=1.4,\Delta j=1/K_2=1.7 Δi=1/K1=1.4,Δj=1/K2=1.7,缩小后的图像为:

G = [ f 12 f 13 f 15 f 16 f 32 f 33 f 35 f 36 f 42 f 43 f 45 f 46 ] G=\begin{bmatrix} f_{12}& f_{13} &f_{15} & f_{16}\\ f_{32} & f_{33}& f_{35} &f_{36} \\ f_{42}& f_{43}& f_{45}& f_{46} \end{bmatrix} G=f12f32f42f13f33f43f15f35f45f16f36f46

MATLAB程序:

%基于等间隔采样的图像缩小方法
clc
clear
I=imread('OIP-C (1).jfif');
s=size(I);
%这里k1,k2为水平,数值方向缩放比
k1=0.4;
k2=0.4;
delta_x=1/k1;
delta_y=1/k2;
G=zeros(round(s(1)*k1),round(s(2)*k2),s(3));
for i=1:round(s(1)*k1)
    for j=1:round(s(2)*k2)
        G(i,j,1:s(3))=I(round(delta_x*i),round(delta_y*j),1:s(3));
    end
end
G=uint8(G);
figure(1),imshow(I)
figure(2),imshow(G)

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值