欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Datawhale_计算机视觉(cv)学习(一、图像插值)

程序员文章站 2024-03-19 16:55:40
...

图像插值算法原理简单描述

图像处理中,平移变换、旋转变换以及放缩变换是一些基础且常用的操作。这些几何变换并不改变图象的象素值,只是在图象平面上进行象素的重新排列。
需要插值算法来进行处理,常见的插值算法有

  • 最近邻插值
    是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出。缺点是,用该方法作放大处理时,在图象中可能出现明显的块状效应
    -** 双线性插值**
    双线性插值就是线性插值在二维时的推广,在两个方向上做三次线性插值。

OpenCV代码实现

import cv2
 
if __name__ == "__main__":
    img = cv2.imread('image0.jpg', cv2.IMREAD_UNCHANGED)
    
    print('Original Dimensions : ',img.shape)
    
    scale_percent = 30       # percent of original size
    width = int(img.shape[1] * scale_percent / 100)
    height = int(img.shape[0] * scale_percent / 100)
    dim = (width, height)
    # resize image
    resized = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR)

    fx = 1.5
    fy = 1.5

    resized1 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_NEAREST)
    
    resized2 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_LINEAR)
    print('Resized Dimensions : ',resized.shape)
    
    cv2.imshow("Resized image", resized)
    cv2.imshow("INTER_NEAREST image", resized1)
    cv2.imshow("INTER_LINEAR image", resized2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

输出:
Original Dimensions : (547, 730, 3)
Resized Dimensions : (164, 219, 3)
暂时未贴出输出的图片(当学到保存图片时候,补充上)

  • 代码中使用的图片Datawhale_计算机视觉(cv)学习(一、图像插值)
所用函数说明

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
参数:

参数 描述
src 【必需】原图像
dsize 【必需】输出图像所需大小
fx 【可选】沿水平轴的比例因子
fy 【可选】沿垂直轴的比例因子
interpolation 【可选】插值方式

插值方式:

cv.INTER_NEAREST 最近邻插值
cv.INTER_LINEAR 双线性插值
cv.INTER_CUBIC 基于4x4像素邻域的3次插值法
cv.INTER_AREA 基于局部像素的重采样

通常,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。

相关标签: cv学习