基于C++实现图像融合【100010659】
课程作业
COURSE HOMEWORK
一、图像融合效果图
第一组
destinationsV1.jpg sourceV1_2.jpg
resultV1_V1_2.jpg
第二组
destinationsV3.jpg sourceV4.jpg
resultV3_V4.jpg
二、程序使用方法
操作系统:Windows10
软件平台:Visual Studio Ultimate 2013(版 12.0.21005.1REL) + OPENCV 3.0.0
新建项目具体步骤如下。运行时图片位置与新建项目位置相同。
E:\tools\VScourse\ex1_1_demo\ex1_1_demo
将 poison1.cpp 添加到源文件进行运行,即可得到 resultV1_V1_2.jpg
将 poison2.cpp 添加到源文件进行运行,即可得到 resultV3_V4.jpg
1 双击打开 VS2013
Fig1
2 新建空白 Win32 控制台应用程序 ex1_1_demo
文件–新建–项目(单击浏览选择存储位置)
Fig 2
确定–下一步–空项目–完成
3 配置属性表文件
win10 亲试可用。
存储属性表文件备用。opencv 的安装位置不同,配置属性表也不同。
4 将配置好的属性表文件添加到属性管理器
将上面个文件复制粘贴到 ex1_1_demo 所在文件夹下,例如本例中,文件目录为 E:\tools\VScourse\ex1_1_demo
在属性管理器右击 Debug|Win32,如 Fig3。
添加现有属性表,如 Fig4。
单击打开
同理,添加 opencv_release.props, 在属性管理器右击 Release|Win32, 添加现有属性表, 单击打开(若只在 debug 模式下运行,此步骤可以省略)
Fig 3 Fig 5
Fig 4
若没有看到属性管理器,则单击视图–其他窗口–属性管理器,将其调出。
5 添加源程序
单击解决方案资源管理器,如 Fig5。若没有看到,则单击视图–解决方案资源管理器,将其调出。
右击源文件–添加–新建项–添加,新建 ex1_1_blending.cpp,如 Fig6
Fig 6
三、算法介绍
1 图片读取
Mat img1, img2;
Mat in1 = imread("sourceV1_2.jpg");
Mat in2 = imread("destinationsV1.jpg");
imshow("src", in1);
imshow("dst", in2);
2 求取图像的梯度场
sourceV1_2.jpg
Xp (b) Xn
Yp (d) Yn
Fig 7 sourceV1_2.jpg 4 个方向的梯度
Xp (b) Xn
Yp (d) Yn
Fig 8 destinationsV1.jpg4 个方向的梯度
3 求解融合图像的散度
Fig 9 散度
4 泊松重建
resultV1_V1_2.jpg
5 图片读取
Mat img1, img2;
Mat in1 = imread("sourceV4.jpg");
Mat in2 = imread("destinationsV3.jpg");
imshow("src", in1);
imshow("dst", in2);
6 求取图像的梯度场
sourceV4.jpg
Xp (b) Xn
Yp (d) Yn
Fig 10 sourceV4.jpg 4 个方向的梯度
destinationsV3.jpg
Xp (b) Xn
Yp (d) Yn
Fig 11 destinationsV3.jpg4 个方向的梯度
7 求解融合图像的散度
Fig 12 散度
8 泊松重建
resultV3_V4.jpg
9 图像融合效果改进
结合数学形态学和小波变换改进图像融合算法。处理高频系数时,进行形态学边缘检测和加权平均融合。
对边缘选取一圈作为 ROI,应用 source 和 destination 除去 ROI 区域的数据建立高斯模型,利用高斯过程重建边缘,将最大后验函数值作为其像素值。
♻️ 资源
大小: 22.5MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87425304
相关文章
- 【C/C++学院】(29)网络编程--实现跨平台传输文件(TCP版)
- C++函数调用时的参数传递-3中传递方式
- 二分查找法的C++泛型实现
- C语言/C++基础之实现绕线画程序(附源码)
- Open3D (C++) 偏度平衡滤波(SKF)算法
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net js javascript c++ python
- Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)
- Algorithm:C++语言实现之Hash哈希算法相关(dbj2、sdbm、MurmurHash)
- 使用Qt和C语言或者C++语言实现十、二、八、十六进制之间的转换(两种方法)
- C++QT实现压缩文件、文件夹和解压缩操作
- 解答私信@被c++折磨头秃的花季美少女 //C++ 写一个带命令行参数的程序,可以实现将参数求和、求平均值以及排序之后输出(参数的数量不确定)。
- C++/MFC简单实现HTTP通信(基于CHttpFile)
- C++17剖析:string在Modern C++中的实现
- C++的学习心得和知识总结(十九)|基于Libpq实现C++访问PostgreSQL数据库
- c++ 纯虚函数和抽象类那些事(二)实现抽象类
- C++创建对象new与不new区别(二十五)
- Effective C++:条款38:通过一个复杂的模具has-a要么“基于一些实现”
- 设计模式C++达到 3.抽象工厂
- VC++实现会议中阻止屏保、阻止系统自动关闭屏幕、阻止系统待机(附源码)
- Walkthrough: Create and use your own Dynamic Link Library (C++)
- 代理模式C++实现
- 孙猴子装饰七十二变篇--装饰器模式C++实现
- 【C++ 科学计算】矩阵填充 imbue
- 【C++ 科学计算】基于C++实现Base64编码
- 【C++ 科学计算】基于C++实现3D点云
- 【C++ 科学计算】基于C++实现人脸识别算法(HOG)
- 【C++】算法集锦(3):回溯,从入门到入土,七道试题精选、精讲、精练
- 基于新版Opencv5.x(C++)流媒体视频流实现网页浏览器人脸检测
- 【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题
- 使用NDK生成native C/C++的可执行程序
- C++没落了?学习C++没有前途了?从业者给你揭晓答案