概述
这个软件是毕设课题,本科生的水平,大佬可以忽略了,但做毕设的时候觉得pyqt5相关的资料太少了,所以分享一下
主要功能
- 数据增强 HE,CLAHE,依赖skimage;
- 图像分割 阈值分割:OTSU,double threshold,依赖skimage;基于深度学习的分割方法:U-Net
- 修改分割结果 单图 双图;
界面设计
主界面的设计是用Qt Creator可视化设计后再用pyrcc转成py文件,业务逻辑运用了信号与槽,主要是自动关联的槽函数,模仿了labelme的设计,图像显示部分central widget,在QWidget上放了一个QLabel后,把QWidget手动改成QLabel,实现两个label的叠放,完成了遮罩,工具栏和菜单按钮的使能根据图片的状态自适应,如图片数量、原图是否修改、是否进行分割、分割后是否保存,这些都通过建立字典来实现
双图和单图修正因为需要在工具栏中添加显示颜色的label小方块,显示缩放值的文本框,所以没有使用可视化设计,重写了工具栏,把布局调好后用toolbar里的addwidget
进度条窗体可以用progressdialog,我用的对话框,QThread类,值的改变通过在不同的地方发信号,类的初始化里面有信号,调用类的时候就要把槽函数传进去,在类里连接,QT里没有让线程停下来的方法,要设置一个标志变量,放到耗时较长的循环前,每次循环前检测这一变量,不符合条件时停下
遮罩
分割图会以遮罩覆盖在原图上
底层的QLabel,setpixmap为原始图片
生成分割图后,将图像由nd.array转为QImage,改成ARGB32格式,再遍历分割图,黑色的像素点置为透明,白色的点设置为用户选取的颜色和透明度,在初始文件config.txt可以读取
setting里可以修改网络参数和遮罩参数,点击save对参数合法性进行检测,全部合法后保存到文件中,用之前先读取config拿到用户最新设置的参数
人工修正
打开人工修正窗口,主界面关闭,人工修正窗口关闭,主界面再重新打开
图片的显示利用drawevent,单图是先draw原图再draw分割图,双图是两边分别显示原图和分割图,打开时默认是浏览模式,按住鼠标移动相当于滑动滑动条,双击左键或右键进入编辑模式,编辑模式下左键按下编辑前景,右键按下编辑背景
图片传递考虑了多种情况,如果原图已经增强,将增强后的原图以QImage类型传递,如果图像已经分割,如果没有保存将分割图以QImage传递,如果已经保存则传递保存路径,对分割图的修改也要保存到同一路径
没有编辑痕迹时save不可用,包括没有编辑和编辑痕迹全部被撤销,在主界面中没有保存的分割结果可以在人工修正中保存,保存后发射信号,改变图片的状态
错误提醒
错误提醒窗体采用QMessagebox,根据不同的提醒类型选择information/warning/about,所以错误提醒窗体,包括进度条都设置了setWindowModality(Qt.ApplicationModal),在这些窗体打开时不能进行其他操作
导出与导入
导出
另存原图和分割图时会自动生成文件名,原图再原文件名后加_enhance,分割图加_label,输出格式固定为png。数据增强后的原图转化为灰度图后再保存,便于对增强后的原图分割,同时将原图的保存路径添加到字典中,方便在多图处理时找到保存的原图,工具栏上的save对二者都进行保存,先判断图片状态,如只修改原图就指保存原图
导入
open打开单张图片,open dir打开同级目录下的图片,不包括子文件夹,如果有满足_label命名的图片,默认为标注图,将其以遮罩显示在对应的原图上,文件名并不加入文件列表,在文件列表中已经存在同名文件时会有提醒,同时必须满足png jpg jpeg bmp这四种后缀名,没有时也会报错
github地址:https://github.com/Tianns/imageseg.git
欢迎大家fork我,unet的模型参数涉密 暂时没有上传
最后
以上就是无限短靴为你收集整理的Pyqt5实现图像数据增强、图像分割、修改分割结果的全部内容,希望文章能够帮你解决Pyqt5实现图像数据增强、图像分割、修改分割结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复