其他分享
首页 > 其他分享> > 3.3 图像几何变换——缩小和放大

3.3 图像几何变换——缩小和放大

作者:互联网

1. 图片缩小

比例缩放前后两点 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 1 ] [ x 0 y 0 1 ] \left[\begin{matrix} x \\ y \\ 1 \end{matrix}\right] =\left[\begin{matrix} f_x & 0 & 0\\ 0 & f_y & 0\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x_0 \\ y_0 \\ 1 \end{matrix}\right] ⎣⎡​xy1​⎦⎤​=⎣⎡​fx​00​0fy​0​001​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​

在数字图像中,图像缩小是通过减少像素个数实现,关键在于怎么去掉一部分像素点,而尽可能保持原有图像的概貌特征。下面介绍两种简单的图像缩小技术。
为了理解算法,应该先把图像想成是连续的,然后再四舍五入取离散值。比如计算后得出,缩小后的图像点 ( 2 , 2 ) (2,2) (2,2) 的像素值与原图像 ( 2.1 , 2.8 ) (2.1, 2.8) (2.1,2.8) 处相等,就四舍五入取原图像 ( 2 , 3 ) (2,3) (2,3) 处的坐标。
为了便于叙述,放大或缩小前的图像为原图像 R R R,可理解为单词 r a w raw raw,放大或缩小后的图像为新图像 S S S, R R R的后面一个字母。

2. 图像放大

OpenCv实战

直接用 resize 函数即可实现放大缩小。

cv.resize(img, dsize, [interpolation])
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

def show(img):
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB), cmap='gray', vmin=0, vmax=255)
    plt.show()

img = cv.imread('pic/rabbit50x33.jpg') # 路径更换成新的图片
img_resize1 = cv.resize(img, (330, 500), interpolation=cv.INTER_NEAREST)
img_resize2 = cv.resize(img, (330, 500), interpolation=cv.INTER_LINEAR)

show(img)
show(np.hstack([img_resize1, img_resize2]))

标签:11,10,img,6.7,7.3,几何变换,3.3,图像
来源: https://blog.csdn.net/gengli2017/article/details/116301237