数字图像处理的python实践(4)——几何变换之平移、镜像、转置

本文介绍了数字图像处理中的几何变换,包括平移、镜像和转置。通过Python代码展示了这些基本操作,强调了numpy.array在图像处理中的应用,并探讨了不同变换的数学原理,为后续更复杂的图像处理运算打下基础。
摘要由CSDN通过智能技术生成

       几何变换是图像处理中的重要模块,标题中所涉及的内容都是很简单的,不多说明直接上代码了。首先是平移,因为像素点都是离散的,如果出现不是整数的平移矢量,需要进行一些其他的判断,我们暂时不讨论这种比较复杂的情况,在之后的缩放中再看当处理后的图像的点在原图中的对应位置并不落在像素点上的处理方法。

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

def Move(src, target, vector = (0,0), expand = False):
	'''
	vector:move vector.Its componment should be integer.
	'''
	im = Image.open(src)
	imarray = np.array(im)
	height, width = imarray.shape
	vx, vy = vector
	
	if not expand:
		new_arr = np.zeros((height, width), dtype = 'uint8')
		for i in range(height):
			for j in range(width):
			 if i - vx >= 0 and i - vx < height and j -vy >= 0 and j - vy < width:
			 	new_arr[i, j] = imarray[i - vx, j - vy]
			 else:
			 	new_arr[i, j] = 255
	else:
		new_arr = np.ones((height + abs(vx), width + abs(vy)), dtype = "uint8")*255
		for i in range(relu(vx), height + relu(vx)):
			for j in range(relu(vy), width + relu(vy)):
			 	new_arr[i, j] = imarray[i - relu(vx), j - relu(vy)]

	new_im = Image.fromarray(new_arr)
	new_im.save(target)

def relu(x):
	if x >= 0:
		return x
	else:
		return 0

gray_girl = "C:/Users/60214/Desktop/python_work/DigitalExecution/gray_girl.jpg"
tar = "
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值