Python图像处理之图像增广算法详解
目录
前言图像增广算法a.图像旋转b.图像亮度调整c.图像裁剪及拼接本章小结前言
图像增广算法在计算机视觉领域扮演着至关重要的角色。随着深度学习的兴起,大规模数据集的需求变得更加迫切,而图像增广算法可以通过对原始图像进行一系列变换,扩充数据集,从而提升模型的泛化能力和鲁棒性。
【资料图】
本文将着重介绍图像增广算法中的三个关键方面:图像旋转、图像亮度调整以及图像裁剪与拼接。这些算法不仅能够增加训练数据的多样性,还可以帮助我们解决一些实际问题,例如旋转不变性、光照变化以及物体完整性等。
图像增广算法
这里我们将使用一些Python优秀的第三方库来完成。在图像增广方面,有许多可供选择的第三方库,如PIL/Pillow、OpenCV、scikit-image等。而在PyTorch中也提供了一些图像增广的函数,虽然图像增广算法在PyTorch中也属于预处理的一部分,但为了方便起见,我们仍然选择使用大家较为熟悉的OpenCV库,而不使用PyTorch。
a.图像旋转
def Rotated_image(img, angle = 45, scale = 1.0): height, width = img.shape[:2] center = (width // 2, height // 2) matrix = cv2.getRotationMatrix2D(center, angle, scale) #旋转中心,旋转角度,缩放比例 rotated_image = cv2.warpAffine(img, matrix, (width, height)) return rotated_image
通过cv2.getRotationMatrix2D
函数计算旋转矩阵,然后使用cv2.warpAffine
函数执行旋转操作。最后,使用cv2.imshow
函数显示旋转前后的图像。
实验结果:
原始图片与旋转图片
b.图像亮度调整
def Adjusted_image(img,brightness_factor = 1.5): image_float = img.astype(np.float32) adjusted_image = image_float * brightness_factor # 将图像像素值限制在[0, 255]范围内 adjusted_image = np.clip(adjusted_image, 0, 255) adjusted_image = adjusted_image.astype(np.uint8) return adjusted_image
将图像转换为浮点型数据类型。然后,通过乘以一个亮度调整因子来调整图像的亮度,这里的亮度调整因子可以根据具体需求进行调整。接下来,我们使用np.clip
函数将图像像素值限制在[0, 255]范围内,避免溢出。最后,我们将图像转换回无符号8位整数类型,并显示调整后的图像。
实验结果:
原始图片与亮度调整图片
c.图像裁剪及拼接
裁剪
def Cut_image(image,coordinate, Leath, save=True, saveFile=""): x, y=coordinate[0],coordinate[1] width, height=Leath[0],Leath[1] h, w = image.shape[:2] cropped_image = image[y:y + height, x:x + width] padded_image = np.full((h, w, 3), 128, dtype=np.uint8) x_offset = (w - width) // 2 y_offset = (h - height) // 2 padded_image[y_offset:y_offset + height, x_offset:x_offset + width] = cropped_image if save: cv2.imwrite(saveFile,cropped_image) return padded_image
此功能为裁剪图像并用灰色填充不足的部分。添加了保存功能,默认不使用。
实验结果:
裁剪图像并用灰色填充
拼接
def Stitcher_image(image_paths): stitcher = cv2.Stitcher_create() images = [] for path in image_paths: img = cv2.imread(path) if img is not None: images.append(img) if len(images) < 2: print("至少需要两个图像进行拼接") return (status, stitched_image) = stitcher.stitch(images) if status == cv2.Stitcher_OK: return stitched_image else: print("图像拼接失败")
输入图片路径组成的列表,数量大于等于2才可进行拼接。下图是经过裁剪后保存的图片,原图片似乎因为较小,拼接时无法成功,经过放大再裁剪后拼接,实验成功。
实验结果:
拼接的图像
实验分析
实验图片:300x300,Leopard_cat.png
本次实验采用一张300x300大小的梅狸猫图片进行实验,并进行了图像旋转、图像亮度调整以及图像裁剪与拼接,效果均达到我的预期,在图像裁剪的过程中,因为考虑到做的是数据增广,所以添加了灰度条,保证裁剪后的图片大小与原始图片相同;拼接的图片似乎不能太小,可能会拼接失败,本实验经过图片进行放大后裁剪后拼接,实验成功。
关于拼接出现黑边的分析:
在实验过程中,我们注意到拼接后的图像边缘可能会出现一些黑边。这是由于图像拼接算法的工作原理所致,它会尝试将图像进行平滑过渡,以便在拼接处产生较少的不连续性。在一些情况下,这可能会导致边缘处的像素值略微偏暗,从而形成黑边。
虽然这些黑边可能对整体图像的观感产生一些影响,但通常情况下它们并不会严重干扰图像的内容。如果你认为黑边对你的应用场景有较大影响,您可以尝试进行后处理来减轻或消除黑边的影响。如边缘增强、图像修复或边缘填充等,来改善黑边问题。
总的来说,尽管在图像拼接过程中可能会出现一些黑边,但这并不会严重影响整体的拼接结果。通过适当的后处理方法,我们可以进一步改善图像的外观,并获得更好的拼接效果。
本章小结
本章介绍了图像处理中常见的几种操作:旋转、亮度调整、裁剪、拼接等。通过使用OpenCV和NumPy库的函数,轻松地实现了。
首先,通过cv2.getRotationMatrix2D和cv2.warpAffine函数,我们可以指定旋转中心、旋转角度和缩放比例来旋转图像。
接下来,将图像转换为浮点数类型,我们可以通过乘以亮度因子并将像素值控制在0到255之间来调整图像亮度。
然后,通过指定裁剪区域的坐标和长度,我们可以裁剪出我们需要的图像,并使用灰色填充图像的不足部分。
最后,使用cv2.Stitcher_create和stitch函数,我们可以将多张图像拼接在一起,从而创建一个更大的图像。在拼接过程中,我们需要注意边缘区域可能会有黑边的问题,可以使用图像裁剪来去除。
上述这些操作是图像处理中非常基础的操作,在实际应用中也非常常见。掌握这些基础操作后,我们可以更加轻松地实现更复杂的图像处理算法。
以上就是Python图像处理之图像增广算法详解的详细内容,更多关于Python图像增广算法的资料请关注脚本之家其它相关文章!
标签:
相关文章
巴雷特:我打得真的垃圾 我对自己今天的表现非常失望!_全球信息
直播吧5月13日讯NBA季后赛次轮G6,尼克斯92-96不敌热火,总比分2-4被淘汰,巴雷特赛后接受了媒体采访。谈到
银河护卫队3观影感受,大团圆结局太好了!
印象中第一部星爵说他是个浣熊,他也不承认,后来被人叫rat,叫vermin,叫puppy,叫badger,都会生气,但
读教育名著心得体会800字_读教育名著心得体会 全球焦点
1、教育的本来涵义:教化培育。教育贯穿于一个人的出生并持续终身。甚至教育可以开始得更早,一些父母通过
全球滚动:佛山三水区妇幼保健院二价HPV疫苗接种指引
佛山市三水区妇幼保健院二价HPV疫苗接种目前三水区妇幼保健院成人接种门诊有进口二价HPV疫苗供应,姐妹们可
得到不可达两点之间的距离活动记录_有记录的世界上迁徙距离最远的是什么鸟
1、北极燕鸥是世界候鸟中迁徙距离最远的一种鸟类,每年夏末离开北方的居住地,飞行16000公里前往南极洲附近
脊髓型颈椎一般不建议做手术_什么是脊髓型颈椎病 天天亮点
1、脊髓型颈椎病是颈椎病的常见类型,主要是因为颈椎间盘突出或颈椎退变,压迫脊髓,引起脊髓血液循环障碍
【环球新要闻】实至名归,官方:维拉主帅埃梅里当选英超4月最佳主教练
官方消息,维拉主帅埃梅里当选英超4月最佳主教练。4月份,埃梅里带领维拉在英超取得了5胜1平1负的成绩,最
环球速看:赣锋锂业: 关于2021年股票期权激励计划授予股票期权第二个行权期的行权条件成就的公告
赣锋锂业:关于2021年股票期权激励计划授予股票期权第二个行权期的行权条件成就的公告
全球资讯:中山大学附属第一医院_中山大学第五附属医院官网
1、珠海妇幼保健医院属于专科医院,在妇幼方面好。2、床位紧张,服务差,排队严重。3、中山大学第五附属医
昆明医科大学2023年硕士拟录取考生办理“定向就业”事宜通知
各有关考生:根据教育部《2023年全国硕士研究生招生工作管理规定》和《昆明医科大学2023年硕士研究生招生考
宝尊电商-SW(09991.HK)5月25日举行董事会会议批准一季度业绩
格隆汇5月12日丨宝尊电商-SW公布,公司董事会将于2023年5月25日(香港时间)举行董事会会议,藉以(其中包括)
每日热闻![路演]易联众:英才邦正积极向其他省份市场拓展
易联众(300096)于5月12日在全景网参加2023年厦门辖区上市公司投资者网上集体接待日,在线上交流活动中,
天天热点!一尺等于多少寸(一尺等于多少寸是多少厘米)
一尺等于多少寸?一尺等于多少寸?1尺等于10寸,1寸约合3 33公分(厘米)。尺,是一种长度单位,中国叫“市
山东济南村支书一家三口遇害:曾获全国劳动模范称号,五一节刚被表扬
5月10日,济南市长清区某小区发生一起致3死刑案,死者分别为西李村村支书刘某某、其妻子和16岁的儿子。3名
【环球财经】FDIC拟向美国大型银行收取近160亿美元以弥补保险基金损失 天天快资讯
美国联邦储蓄保险公司在11日发布公告说,将向成员银行收取特别额定费(specialassessment)以收回因保护硅
当前信息:设备验收单内容有哪些-设备验收单表格模板
1、去百度文库。2、查看完整内容>内容来自用户:hx资料库工程设备验收单编号№设备名称|供应|单位|规格型
微信理财通怎么用 微信理财通怎么用零钱还信用卡呢_今日精选
本文内容是由小编为大家搜集关于微信理财通怎么用,以及微信理财通怎么用零钱还信用卡呢的资料,整理后发布
长阳科技:拟投建年产4亿平方米储能和动力汽车用锂离子电池隔膜项目|环球微速讯
金融界5月11日消息长阳科技公告,拟投资建设“年产4亿平方米储能和动力汽车用锂离子电池隔膜项目”,项目总