# 数字图像处理
## 程序说明
### 目录结构
- main.py:程序主入口,可通过`python main.py`启动PyQt5界面
- main.ui:使用Qt Designer进行的界面设计
- Ui_main.py:通过编译.ui文件生成的界面代码,供主程序调用
- util.py:各种工具函数,包含直方图、傅里叶变换、各种边缘检测算法等
- dist:此文件夹中包含打包的各种库和依赖,及可执行文件
- 直接运行UI程序,请点击`dist/main/main.exe`
打包命令:
```sh
pyinstaller -D -i test.ico main.py
```
### 程序界面
程序打开后如下图所示,包含输入输出两个窗格,都是固定600*600大小,窗口可放大缩小,当窗格不可伸缩。
![image-20220630223352486](https://n.sunie.top:9000/gallery/2022summer/202206302233866.png)
菜单栏包含5个主菜单,每个菜单中都有一些具体的功能,一一对应了下面大作业的所有需求,部分功能都相应的快捷键。
- 文件:打开、关闭和导出图片,注意打开之后会显示在输入窗格
- 输入:对输入窗格内的图片进行处理,直接在输入窗口中修改(inplace操作)
- 输出:使用输入窗格内激活的图片作为输入,进行图像基础操作,在输出窗格出显示图片
- FFT:使用输入窗格内激活的图片作为输入,自动转为灰度图,进行FFT相关操作,在输出窗格出显示图片
- “傅里叶变换”功能一共输出
- 边缘检测:使用输入窗格内激活的图片作为输入,自动转为灰度图,进行边缘检测相关操作,在输出窗格出显示图片
![image-20220630223744228](https://n.sunie.top:9000/gallery/2022summer/202206302316409.png)
![image-20220630225123867](https://n.sunie.top:9000/gallery/2022summer/202206302251998.png)
在运行程序时:
- 控制台输出的是程序运行的输出,如果执行异常,程序会退出,退出原因间控制台输出
- 打开的图片会被压缩显示,即长、宽中较大的一个被设置成600,另一个维度等比缩放。但是图片的实际尺寸不变,并通过数字显示在右上角
- 输入输出均有多个窗格,可以在窗格之间进行切换,但是尚不支持点击'x'关闭,想要关闭窗格需点击菜单>文件>关闭
- 每个窗格中当前展示的内容是正在激活的tab
## 作业文档
### 大作业内容(1)
- 基于VC的多文档界面(MDI )方式,设计数字图像处理程序框架
- 软件中编程实现BMP格式图像文件的读取、显示
- 选择实现JPG、 RAW格式文件的读取、显示,以及与BMP格式的转换
- 完成图像的基本操作:加、求反、几何变换
- 完成图像的直方图均衡化处理
#### 文件的读写
文件的格式种类多样,打开和关闭都支持四种类型的格式。通过这种方式实现了各种图片格式之间的转换。
![image-20220630225657487](https://n.sunie.top:9000/gallery/2022summer/202206302256827.png)
#### 图像的基本操作
![image-20220630230720121](https://n.sunie.top:9000/gallery/2022summer/202206302307886.png)
加法会使用所有打开的输入进行加法,最终会使用所有图中最大宽和高最为新图的尺寸。
**注意**:请不要使用通道不一致的图片进行加分操作,会造成程序崩溃(可预先都转换为灰度图)
![image-20220630230834085](https://n.sunie.top:9000/gallery/2022summer/202206302308093.png)
进行缩放呈现的效果不会改变,但实际的大小已经变了,见右上角的尺寸。
#### 直方图均衡化
色彩明显变得更加鲜艳:
![image-20220628191431704](https://n.sunie.top:9000/gallery/2022summer/202206302316413.png)
## 大作业内容(2)
FFT作业说明
- 实现图像的FFT变换和显示
- 实现FFT反变换
观察典型图像FFT变换后的频谱图
- 首先构造一幅黑白二值测试图像,例如:在128×128的黑色背景中心产生一个4×4的白色方块。然后依次进行以下测试。
- DFT
<img src="https://n.sunie.top:9000/gallery/2022summer/202206281712345.png" alt="image-20220627215141715" style="zoom:67%;" />
- 平移、缩放
<img src="https://n.sunie.top:9000/gallery/2022summer/202206281712605.png" alt="image-20220627215247881" style="zoom:67%;" />
#### FFT
通过菜单栏>FFT>傅里叶变换进行,执行过程中输出3张图片:
- 复数域上频谱图(强行转换uint8使得图片失真)
- 动态范围压缩的2DFT图(将值最高的点映射成亮度255)
- FFT反变换的输出图
![image-20220630231153611](https://n.sunie.top:9000/gallery/2022summer/202206302311110.png)
#### 高通/低通滤波
支持自定义滤波半径,通过交互式输入方式选择,高通、低通的结果分别如下:
![image-20220630232002932](https://n.sunie.top:9000/gallery/2022summer/202206302320811.png)
## 大作业内容(3)
对于图1中XY平面上的边界,对其进行傅里叶描述子的表示,用不同的项数重构
![image-20220627215629337](https://n.sunie.top:9000/gallery/2022summer/202206272156275.png)
傅里叶描述子是一种图像特征,用来描述轮廓的特征参数。
傅里叶描述子的基本思想是:首先我们设定物体的**形状轮廓**是一条闭合的曲线,一个点沿边界曲线运动,假设这个点为p(l),它的复数形式的坐标为x(l)+jy(l),它的周期是这个闭合曲线的周长,这也表明属于一个周期函数。该以曲线周长作为周期的函数能够通过傅里叶[级数](https://so.csdn.net/so/search?q=级数&spm=1001.2101.3001.7020)表示。在傅里叶级数里面的多个系数z(k)与闭合边界曲线的形状有着直接关系,将其定义为**傅里叶描述子**。当取到足够阶次的系数项z(k)时,傅里叶描述子能够完全提取形状信息,并恢复物体的形状。
也就是说,傅里叶描述子用一个向量表示轮廓,将轮廓数字化,从而能更好的区分不同的轮廓,达到识别物体的目的。傅里叶描述子的特点是简单并且非常高效,是识别物体形状的重要方法之一。
简单来说,傅里叶描述子就是用一个向量代表一个轮廓,将轮廓数字化,从而能更好地区分不同的轮廓,进而达到识别物体的目的。
如上图所示,少数的傅里叶描述子就可以用于捕获边界的大体特征。这一性质很有用,因为这些系数携带有形状信息。
**整个流程如下:**
1. 边缘检测:使用边缘检测算法将边缘提取出来,并执行闭操作,让边缘更明晰,去掉小黑点
2. 选择所有轮廓中最大轮廓,即目标轮廓,绘制出来
3. 计算轮廓的傅里叶描述子,通过窗格方式输出前32个描述子
4. 可选择描述子的项数进行重构。
![image-20220630232156686](https://n.sunie.top:9000/gallery/2022summer/202206302321671.png)
## 大作业内容(4)
边缘检测
- 编程实现基于典型微分算子(不少于Roberts、Sobel、Prewitt、拉普拉斯算子)的图像边缘提取,能够读取图像文件内容,进行检测后输出边缘检测结果
- 分析比较不同算子的特性
![image-20220630233332598](https://n.sunie.top:9000/gallery/2022summer/202206302333920.png)
![image-20220630233039433](https://n.sunie.top:9000/gallery/2022summer/202206302330088.png)
![image-20220630233227582](https://n.sunie.top:9000/gallery/2022summer/202206302332421.png)
| 算子 | 优缺点比较 |
| --------- | ------------------------------------------------------------ |
| Roberts | 对具有陡峭的低噪声的图像处理效果较好,但利用Roberts算子提取边缘的结果是边缘比较粗,因此边缘定位不是很准确 |
| Sobel | 对灰度渐变和噪声较多的图像处理效果比较好,Sobel算子对边缘定位比较准确 |
| Scharr | 与Sobel算子的不同点是在平滑部分,这里所用的平滑�
没有合适的资源?快使用搜索试试~ 我知道了~
数字图像处理大作业合集-四次数字图像处理大作业(95分以上项目).zip
共306个文件
dll:138个
pyd:53个
qm:23个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 下载量 20 浏览量
2024-05-10
15:16:38
上传
评论
收藏 328.54MB ZIP 举报
温馨提示
数字图像处理大作业合集—四次数字图像处理大作业(95分以上项目).zip四次作业内容介绍如下:大作业内容(1)基于VC的多文档界面(MDI )方式,设计数字图像处理程序框架,软件中编程实现BMP格式图像文件的读取、显示选择实现JPG、 RAW格式文件的读取、显示,以及与BMP格式的转换,完成图像的基本操作:加、求反、几何变换,完成图像的直方图均衡化处理。 大作业内容(2)FFT作业说明,实现图像的FFT变换和显示,实现FFT反变换 大作业内容(3)对于图1中XY平面上的边界,对其进行傅里叶描述子的表示,用不同的项数重构,傅里叶描述子是一种图像特征,用来描述轮廓的特征参数。 大作业内容(4) 边缘检测、编程实现基于典型微分算子(不少于Roberts、Sobel、Prewitt、拉普拉斯算 子)的图像边缘提取,能够读取图像文件内容,进行检测后输出边缘检测结果,分析比较不同算子的特性。 数字图像处理大作业合集—四次数字图像处理大作业(95分以上项目).zip
资源推荐
资源详情
资源评论
收起资源包目录
数字图像处理大作业合集-四次数字图像处理大作业(95分以上项目).zip (306个子文件)
result.bmp 4.88MB
COPYING 1KB
mkl_core.dll 68.3MB
mkl_avx512.dll 49.56MB
mkl_avx.dll 41.74MB
mkl_mc3.dll 40.75MB
mkl_mc.dll 39.55MB
mkl_avx2.dll 39.25MB
mkl_def.dll 34.19MB
libopenblas.XWYDX2IKJW2NMTWSFYNGFUWKQU3LYTCZ.gfortran-win_amd64.dll 32.92MB
libopenblas.GK7GX5KEQ4F6UYO3P26ULGBQYHGQO7J4.gfortran-win_amd64.dll 32.82MB
mkl_intel_thread.dll 31.5MB
mkl_pgi_thread.dll 27.07MB
mkl_tbb_thread.dll 20.09MB
opengl32sw.dll 19.95MB
opencv_videoio_ffmpeg453_64.dll 19.92MB
svml_dispmd.dll 17.97MB
mkl_sequential.dll 17.58MB
mkl_rt.dll 14.47MB
mkl_vml_avx.dll 12.43MB
mkl_vml_avx2.dll 12.35MB
mkl_vml_avx512.dll 12.08MB
mkl_vml_mc.dll 11.48MB
mkl_vml_mc3.dll 11.42MB
mkl_vml_mc2.dll 11.34MB
mkl_scalapack_ilp64.dll 7.29MB
mkl_scalapack_lp64.dll 7.23MB
Qt5Gui.dll 6.68MB
mkl_vml_def.dll 6.56MB
mkl_vml_cmpt.dll 6.34MB
mfc140u.dll 5.78MB
Qt5Core.dll 5.74MB
Qt5Widgets.dll 5.24MB
libmmd.dll 4.07MB
python38.dll 4.01MB
d3dcompiler_47.dll 3.98MB
Qt5Quick.dll 3.96MB
Qt5Qml.dll 3.43MB
libGLESv2.dll 3.23MB
libcrypto-1_1-x64.dll 3.06MB
libiomp5md.dll 1.86MB
libifcoremd.dll 1.64MB
libifcorert.dll 1.63MB
sqlite3.dll 1.47MB
libirngmd.dll 1.46MB
qwindows.dll 1.41MB
Qt5Network.dll 1.28MB
ucrtbase.dll 993KB
qminimal.dll 825KB
qoffscreen.dll 737KB
libssl-1_1-x64.dll 666KB
MSVCP140.dll 613KB
pythoncom38.dll 566KB
mkl_blacs_ilp64.dll 543KB
qwebp.dll 498KB
qwebgl.dll 471KB
ifdlg100.dll 437KB
Qt5QmlModels.dll 428KB
Qt5DBus.dll 426KB
qjpeg.dll 411KB
qtiff.dll 381KB
vccorlib140.dll 358KB
libifportmd.dll 346KB
mkl_cdft_core.dll 334KB
concrt140.dll 325KB
Qt5Svg.dll 323KB
cilkrts20.dll 306KB
mkl_blacs_lp64.dll 303KB
libicaf.dll 229KB
msvcp140_2.dll 201KB
mkl_msg.dll 184KB
vcomp140.dll 150KB
Qt5WebSockets.dll 146KB
qwindowsvistastyle.dll 141KB
pywintypes38.dll 139KB
mkl_blacs_mpich2_ilp64.dll 127KB
mkl_blacs_intelmpi_ilp64.dll 127KB
mkl_blacs_msmpi_lp64.dll 127KB
mkl_blacs_msmpi_ilp64.dll 127KB
mkl_blacs_intelmpi_lp64.dll 127KB
mkl_blacs_mpich2_lp64.dll 127KB
libiompstubs5md.dll 108KB
libchkp.dll 101KB
libmpx.dll 99KB
VCRUNTIME140.dll 83KB
zlib.dll 83KB
api-ms-win-crt-private-l1-1-0.dll 70KB
qxdgdesktopportal.dll 67KB
python3.dll 51KB
qicns.dll 44KB
qsvgicon.dll 41KB
qgif.dll 38KB
qico.dll 37KB
VCRUNTIME140_1.dll 36KB
libffi-7.dll 32KB
qsvg.dll 31KB
qtga.dll 31KB
MSVCP140_1.dll 31KB
qwbmp.dll 29KB
api-ms-win-crt-math-l1-1-0.dll 27KB
共 306 条
- 1
- 2
- 3
- 4
资源评论
程序员张小妍
- 粉丝: 1w+
- 资源: 3074
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功