图像的翻转

您所在的位置:网站首页 matlab器件镜像翻转 图像的翻转

图像的翻转

2023-06-28 16:49| 来源: 网络整理| 查看: 265

在OpenCV中,图像翻转是一种常见的图像处理操作,用于改变图像的方向或视角。它可以水平翻转图像、垂直翻转图像或同时进行水平和垂直翻转。

作用和意义:

数据增强:图像翻转是数据增强的一种方式,可以增加训练数据的多样性,提高模型的泛化能力。校正镜像:有时图像可能是镜像的,需要将其翻转回正常方向。视觉效果:在一些应用中,图像翻转可以产生有趣或特殊的视觉效果。

原理和数学解释: 在图像处理中,图像的翻转是以图像的中心为中轴线进行翻转的。具体来说,我们可以将图像的坐标系原点设置在图像的中心,x轴向右延伸,y轴向下延伸。我们设x 和 y 是原始图像中的坐标,x’ 和 y’ 是翻转后图像中的坐标,w和 h分别表示图像的宽度和高度。在这个坐标系下,进行图像翻转的原理如下:

垂直翻转:以图像中心为中轴线,对图像进行上下翻转。 [x'] [1 0 0 ] [x] [y'] = [0 -1 h-1] * [y] [1 ] [0 0 1 ] [1]

翻转后,图像中每个像素点的新坐标为 (x’, y’),其中 x’ 的计算公式为 x’ = x,而 y’ 的计算公式为 y’ = h - 1 - y。这里的 h 是图像的高度,即图像的行数。

水平翻转:以图像中心为中轴线,对图像进行左右翻转。 [x'] [-1 0 w-1] [x] [y'] = [0 1 0 ] * [y] [1 ] [0 0 1 ] [1]

翻转后,图像中每个像素点的新坐标为 (x’, y’),其中 x’ 的计算公式为 x’ = w - 1 - x,而 y’ 的计算公式为 y’ = y。这里的 w是图像的宽度,即图像的列数。

水平和垂直同时翻转:以图像中心为中轴线,对图像进行水平和垂直方向上的翻转。 [x'] [-1 0 w-1] [x] [y'] = [0 -1 w-1] * [y] [1 ] [0 0 1 ] [1]

翻转后,图像中每个像素点的新坐标为 (x’, y’),其中 x’ 的计算公式为 x’ = w - 1 - x,而 y’ 的计算公式为 y’ = h - 1 - y。

这样,在进行图像翻转时,我们根据图像的中心为中轴线,按照上述公式计算每个像素点的新坐标,从而得到翻转后的图像。请注意,在计算机视觉中,图像的行索引从上到下递增,列索引从左到右递增,因此在矩阵表示中,需要进行坐标的调整以适应这样的索引顺序。所以矩阵中使用了 h - 1 和 w - 1 来进行偏移调整。

具体代码实现过程如下所示:

import cv2 import matplotlib.pyplot as plt class ImageWarp: def __init__(self,image_path): self.image_path=image_path def image_flip(self): img=cv2.imread(self.image_path) if img is None: print("Unable to load image!") else: imgflip1=cv2.flip(img,0) imgflip2 = cv2.flip(img, 1) imgflip3 = cv2.flip(img, -1) self.image_show(img,imgflip1,imgflip2,imgflip3) def image_show(self,img,imgflip1,imgflip2,imgflip3): plt.figure(figsize=(9,6)) plt.subplot(221),plt.axis('off'),plt.title("Original") plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) plt.subplot(222),plt.axis('off'),plt.title("Flipped Horizontally") plt.imshow(cv2.cvtColor(imgflip1,cv2.COLOR_BGR2RGB)) plt.subplot(223),plt.axis('off'),plt.title("Flipped Vertically") plt.imshow(cv2.cvtColor(imgflip2,cv2.COLOR_BGR2RGB)) plt.subplot(224),plt.axis('off'),plt.title("Flipped Horizontally & Vertically") plt.imshow(cv2.cvtColor(imgflip3,cv2.COLOR_BGR2RGB)) plt.show() imgfile="Images/lena.jpg" warp=ImageWarp(imgfile) warp.image_flip()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3