(三)图像的放大和缩小

本文介绍了图像缩放的基本原理和方法,包括等间隔采样法实现图像的放大和缩小。通过Python代码展示了如何使用该方法对图像进行等比例缩放,并分析了放大图像时可能出现的问题及解决方案——插值法。示例中展示了原图以及不同缩放比例下的图像效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的放大和缩小

一、知识简介

在计算机图像处理和计算机图形学中,图像缩放(image scaling)是指对数字图像的大小进行调整的过程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度(smoothness)和清晰度(sharpness)上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高,从而使得图像表现得“软”。相反地,缩小一个图像将会增强它的平滑度和清晰度。

二、图像的放大和缩小的基本原理

图像的放大和缩小的基本原理就是一种映射,即缩小后或者放大后的图像像素位置向原图的一个映射。简单理解就是,将放大或者缩小后的图像将其的坐标(长宽)拉伸或者压缩到和原图一样大时,其像素坐标点对应在原图上的位置就是其映射位置
在这里插入图片描述
由上图可以看出,放大或者缩小后的图像的像素值取决于其映射到原图相应位置周围的元素

三、实现和放大图像的方法

1、等间隔采样法实现图像的放大和缩小

1、等间隔采样其实就是在原图中每间隔一定的距离取像素点放到输出图像上。
2、图像时等比例缩小,不等时是不等比例缩小,缩小图像的长和宽的比例会发生变化。
3、图像放大时是将原图像的像素直接对应搬移到放大后的图像画布上

四、python实现

算法的实现步骤:

(1)创建画布大小
设原图的大小为HW,将其放大(缩小)为(zoom_hH)(zoom_wW) = new_h, new_w :zoom_h为高缩放比例zoom_w为宽缩放比例 new_h, new_w缩放后的高和宽创建画布大小:new_h, new_w
(2)将原图向的像素映射到目标画布上
h = int(isampling_interval_h -0.5)
w = int(j
sampling_interval_w -0.5)
h,w 是画布坐标 i,j是原图坐标 (3)当zoom_h==zoom_w时为等比例缩小;当zoom_h!=zoom_w时为不等比例放大(缩小);当zoom_h<1 &&
zoom_w<1时为图片缩小,zoom_h>1 && zoom_w>1时图片放大。

import numpy as np
def zoom_out_equal_interval(img, zoom_h, zoom_w):
    '''
    图像缩小—等间隔采样
    :param img: 原图
    :param zoom_h: 行缩放比例
    :param zoom_w: 列缩放比例
    :return:
    '''
    img_h, img_w ,channels = img.shape    # 获取图像大小
    new_h, new_w = int(img_h*zoom_h),int(img_w*zoom_w)  # 缩放后的图片大小
    print(new_h,new_w)
    zoom_img = np.zeros((new_h,new_w,channels),dtype= np.uint8)  # 创建缩放后的图片大小的矩阵
    sampling_interval_h = zoom_h
    sampling_interval_w = zoom_w
    for i in range(img_h):
        for j in range(img_w):
            h = int(i*sampling_interval_h -0.5)   # 按比例放大或者缩小
            w = int(j*sampling_interval_w -0.5)
            zoom_img[h][w] = img[i][j]
    return zoom_img


import cv2
img = cv2.imread("lenna.png", 1)
zoom_h = 1.5
zoom_w = 1.5
zoom_img = zoom_out_equal_interval(img, zoom_h, zoom_w)
cv2.imshow("zoom_img", zoom_img)
cv2.waitKey(0)

五、结果

原图
在这里插入图片描述

行列个缩小0.5
zoom_h = 0.5
zoom_w = 0.5
在这里插入图片描述

行列各放大1.5倍
zoom_h = 1.5
zoom_w = 1.5
在这里插入图片描述

六、分析

放大的图像由于是原图像素直接搬移到放大后的画布上,导致放大后的画布上的一些像素位置没有值(值为0)。解决这个现象需要利用插值法对没有值的位置进行插值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值