图像融合

图像融合与ROI应用
图像融合 ROI区域和图像混合叠加

理论-线性混合操作


f0 f1 两张大小和类型相同的图片 融合成gx
通过调用以下函数

(权重)
Void cv::addWeighted(InputArray src1,
                                     double alpha,
                                     InputArray src2,
                                     double beta,
                                     double gramma,
                                     OutputArray dst,
                                     int dtype = -1(不用管它,默认)
)
参数1:输入图像src1  
参数2:输入图像src1的alpha值
参数3:输入图像src2
参数4:输入图像src2的alpha值
参数5:gammma值 ()
参数6:输出的混合图像

解剖函数里的算法
dst(I) = saturate_cast<uchar>(src1(I)*alpha + src2(I)*beta + gamma)
1、saturate_cast防止像素值溢出(0~255)
2、beta = 1.0  -  alpha(由理论可知)
3、gamma值为了调整像素值的大小,一般情况下写0.0


通过对图像设置ROI区域可以实现不同尺寸图像的混合。

在进行图像处理时,常常需要设置感兴趣区域(ROI, region of interest),可以在图像任意位置创建ROI区域,设置ROI区域后可以更有针对性的进行下一步处理。

定义ROI有两种方法(假定都从图像左上角(100,100)的位置划定ROI):

1、第一种是使用表示矩形区域的Rect。它指定矩形的左上角坐标和矩形的长宽来划定ROI区域。
ROIImage = srcImage(Rect(100,100,smallImage.cols,smallImage.rows));

2、第二种方法是使用Range()指定感兴趣区域的行或列的范围。Range()指定的区域是一个连续的存储序列。
ROIImage = srcImage(Range(100,smallImage.rows),Range(100,smallImage.cols));

代码示例如下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	Mat src1 = imread("liaowenbin.bmp");
	Mat src2 = imread("liujiahui.bmp");
	if (!src1.data)
	{
		printf("could not load liaowenbin.bmp .../n");
		return -1;
	}
	if (!src2.data)
	{
		printf("could not load liujiahui.bmp .../n");
		return -1;
	}
	namedWindow("liaowenbin",WINDOW_AUTOSIZE);
	imshow("liaowenbin", src1);
	namedWindow("liujiahui",WINDOW_AUTOSIZE);
	imshow("liujiahui",src2);

	Mat dst;
	cv::addWeighted(
		src1,
		0.5,
		src2,
		1.0-0.5,
		0.0,
		dst,
		-1  //可以不填写
	);
	namedWindow("blend",WINDOW_AUTOSIZE);
	imshow("blend",dst);


	waitKey(0);
	return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖零猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值