Python案例用NumPy进行图像处理

Python案例用NumPy进行图像处理

2023年6月29日发(作者:)

Python案例⽤NumPy进⾏图像处理NumPy(Numerical Python)是⼀个⼗分强⼤的数据科学基础包,数据分析⼯作中调⽤的很多⾼级包都是在它的基础上开发出来的,了解它可以帮助学习Python的⾼级应⽤,为未来编写程序,实现⾼阶数据科学算法打下坚实基础。下⾯⽤⼀个例⼦来帮助⼤家理解NumPy的概念。与⼈脑不同,计算机读⼊⼀张 RGB(Red、Green、Blue)图⽚后,是转换成了数字来处理的,⽽NumPy正是对这些数字化图像再加⼯的强⼤⼯具。01案例实战⾸先⽤matplotlib库的pyplot模块读⼊⼀张图⽚(名为,如图7-5-5所⽰): aspltimg = ( 'E:/python_book/img_output/')图 7-5-5 读⼊图⽚* 关于matplotlib库的更多介绍参见《玩转⼤数据》7.8节。⼩贴⼠:图像处理的包很多,本⽂不作详细介绍使⽤ p ( ) 函数将该图⽚显⽰在 Spy der的控制台中。(img)使⽤ type 函数查看 img 的类型,其类型为 。type(img)Out[40]: y其维度⼤⼩为 403 2 , 3024 和3 。ut[41]: ( 4032, 3024, 3)其中,4032与3024分别表⽰图像⾼度与宽度的像素值, 第三个数字表⽰图像有红、绿、蓝三个通道( RGB channel ) 。接下来,就可以⽤上⾯介绍过的切⽚知识来实现对图⽚的⽔平翻转了。img_rotate = img[ :, ::-1, :](img_rotate)运⾏后,输出的图如图 7-5-6 所⽰。图 7-5-6 ⽔平翻转图⽚同理,也可以仅输出图⽚的⼀部分。注意:使⽤切⽚时,第⼀个数值为图像纵坐标⽅向的像素值,第⼆个数值为图像横坐标⽅向的像素值,第三个为 RGB通道号(0、1、2分别代表R、G、B通道)。截取图像最上⾯2500⾏部分的程序如下,输出图⽚如图 7-5-7 。part_img= img[: 2500, :, :](part_img)图 7-5-7 ⽤索引截取部分图⽚也可以⽤索引来改变某些通道颜⾊的数值,或查看单个颜⾊通道的效果。例如:img_r= # 复制图⽚,避免在原图修改img_r[:, :, 1] = 0# 将G通道数值设为0img_r[:, :, 2] = 0# 将B通道数值设为(img_r)输出图⽚如图 7-5-8所⽰。图 7-5-8 仅展⽰红⾊通道⼩贴⼠:仅使⽤切⽚ img_r[: , : , 0] 是⽆法达到⽬的的。 因为图像必须同时拥有 R 、G 、B 三个通道的数值,才能被成功显⽰(⿊⽩图⽚除外)还可以通过布尔值来提取部分图像,例如,下⾯只提取红⾊部分。其思路是,⾸先设定深红、浅红的 RGB 值为上下限:lower_red= ([ 90, 20, 20]) # RGB值的下限 (浅红)upper_red= ([ 190, 65, 65]) # RGB值的上限 (深红)注意,此处数值的选取通常是不固定的,需根据所处理的图⽚⽽变化。然后,对于 img,判定每个像素(每个像素在该数组中都对应3个值, 分别是该像素的的 R 、G 、B 值)与设定的上下界的⼤⼩关系,这时,由于前⾯提到的⼴播原则, 整张图⽚ RGB 3个通道的值会分别与上下限上3个数值⼀⼀⽐较。⽐较后的结果mask1或mask2是与 img 具有相同维度的数组( 即shape同样为( 403 2 , 3024 , 3 ) ),该数组的元素均为布尔值。mask1= ((img[:, :, :] > lower_red)) # 元素为布尔值,与图像维度相同mask2= ((img[:, :, :] < upper_red)) # 元素为布尔值,与图像维度相同随后, 通过取交集,将同时满⾜ mask1与mask2 的元素提取出来, 形成 mask3 。mask3= mask1 & mask2 # 同时满⾜两个条件的元素但到此为⽌这些都是元素级别, ⽽对应 RGB 值的3个元素加在⼀起才能反映出⼀个像素的情况, 因此,下⼀步, 通过 函数, 考查每个像素对应的 RGB 通道的⽐较结果是否均为TRUE:mask= (mask3, axis=( 2)) # R、G、B 通道的⽐较结果全为 True最后, 创建原图的复制图 output _ img , 避免对原图进⾏修改, 并给 mask 值为 False 的对应像素赋值为 0 ( 再次利⽤⼴播机制, 这⾥会为该像素对应的 R 、G 、B 3个通道同时赋值),表⽰⿊⾊:output_img = # 不能改变原图output_img[(mask == False)] = 0# 如果 mask 值为 False, 则赋予 0, 即⿊⾊(output_img)效果如图 7-5-9 所⽰, 只提取了原图⽚中从深红到浅红的部分。图 7-5-9 仅提取红⾊部分的效果举这个例⼦旨在与读者⼀起回顾 NumPy 知识点,虽然实际⼯作中有些⾼级操作是由图像处理专⽤包来完成的, 但掌握NumPy 以后, 完全可以通过⾃⼰编写的程序实现同⼀⽬的, 甚⾄可能协助填补⾼级包的空⽩。02参考书籍《玩转⼤数据》作者:孙江伟 王韵章 宁铮 李夏 王吟曦 李琳 卞伟玮定价:198元扫码,优惠购书内容简介⾯对⽇渐复杂的⼤数据,科技⼯作者很难⽤单⼀的统计软件⾼效、完美地完成从数据挖掘、数据清洗、统计分析到结果呈现的全部⼯作,因此需要熟悉和掌握多种统计⼯具,各取所长、整合使⽤。本书⽴⾜于⼤数据研究的现状,基于实际医疗案例,介绍数学基础知识和统计学基础知识,SAS、R语⾔、Stata和Python这4款⼤数据常⽤分析⼯具的基础编程知识及实践操作。本书主要⾯向在校本科⽣、研究⽣,以及要掌握SAS、R语⾔、Stata和Python的数据⼯作者,熟悉四个软件的任意⼀个且想要在短时间内掌握其他软件的读者,也适合医科学⽣、临床医⽣或药企⼈员等医疗相关⼈员学习使⽤。编辑推荐本书采⽤双⾊印刷,部分重点图⽚可扫码观看彩图。本书采⽤次加⼤开本印刷,使代码的阅读更加⽅便。本书与常规介绍SAS、R语⾔、Stata和Python等统计软件的书籍最⼤的区别在于避免只讲统计分析⽽忽略如何⾼效、准确地提取主要结果,如何⽣成可直接⽤于汇报、交流或达到SCI发表要求的表格。本书⽴⾜于⽬前⼤数据研究的现状分三步进⾏讲解。⾸先强调必须掌握的数学和统计学基础知识;其次,根据真实世界的电⼦病历及健康注册系统的数据特征,模拟出与其复杂程度和处理难度相当的模拟数据库;再次,针对同⼀研究问题,在SAS、R语⾔、Stata和Python中进⾏同步处理,详细讲解如何在这4个统计软件中实现从数据导⼊、数据清洗、统计分析、整理输出结果(表格或图)到结果解释的全部过程,从⽽可完成软件的对⽐学习,达到事半功倍的效果。以上3点也是本书的特⾊所在。笔者将着眼于真实世界的医学研究,主要介绍在四个软件中最常⽤的、最⾼效的命令及编程⽅法,使数据⼯作者能够在短时间内掌握每个软件的精髓,并且能够学以致⽤,切实应⽤到⾃⼰的研究项⽬中解决相关问题。但本书不会过多的涉及诸如模型的⽐较和选择等问题,因该类问题常是由研究课题或项⽬来决定的,不存在放之四海⽽皆准的准则。对该类问题感兴趣的读者,请查阅相关书籍或⽂章。03精彩推荐•鸿蒙原⼦化服务卡⽚开发完美体验•鸿蒙开发实例|构建轻量级智能穿戴设备⽤户界⾯•CCF CSP-J/S第⼀轮认证必考知识点:回溯算法•CCF CSP-J/S第⼀轮认证必考知识点:⼆值图像的最⼤连通块•CCF CSP-J/S第⼀轮认证必考知识点:哥德巴赫猜想•CCF CSP-J/S第⼀轮认证考纲详解•Python 韩信点兵思政案例(含优惠码)••Python ︱爬取天⽓预报信息(附视频)•《机器学习》实验指导书(附实验参考+代码)•Python爬⾍综合实战 │ 创建云起书院爬⾍(附代码)•Python爬⾍实战 │ Email提醒(附代码)•Python深度学习 │⼀⽂掌握卷积神经⽹络

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687976706a62769.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信