opencv中使用cvmerge() 函数融合图像时能否对各个源单通道图像加权融合 5
展开全部
%%假如
r_up=double(up(:,:,1));
g_up=double(up(:,:,2));
b_up=double(up(:,:,3));
r_low=double(low(:,:,1));
g_low=double(low(:,:,2));
b_low=double(low(:,:,3));
RGB(:,:,1)=0.5*r_up+0.5*r_low;
RGB(:,:,2)=0.5*g+0.5*g_low;
RGB(:,:,3)=0.5*b+0.5*b_low;
//OPencv中
//计算两数组的加权值的和
//void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,
double gamma, CvArr* dst );
//函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
//对比matlab
cvCvtPixToPlane(img,b_img,g_img,r_img,NULL);//img为输入的原图,分解各通道
float r_up=0;
float r_low=0;
cvGetMinMaxHistValue(r_img,&r_low,&r_up,NULL,NULL); //求的r_img中的,最大值r_up,最小值r_low
cvAddWeighted(r_img,r_up,r_img,r_low,0,r_img);//得出的r_img,就是加权后的值;
再分别对b_img, g_img进行同样的操作。
cvMerge(b_img,g_img,r_img,dst);//dst为输出图像
r_up=double(up(:,:,1));
g_up=double(up(:,:,2));
b_up=double(up(:,:,3));
r_low=double(low(:,:,1));
g_low=double(low(:,:,2));
b_low=double(low(:,:,3));
RGB(:,:,1)=0.5*r_up+0.5*r_low;
RGB(:,:,2)=0.5*g+0.5*g_low;
RGB(:,:,3)=0.5*b+0.5*b_low;
//OPencv中
//计算两数组的加权值的和
//void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,
double gamma, CvArr* dst );
//函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
//对比matlab
cvCvtPixToPlane(img,b_img,g_img,r_img,NULL);//img为输入的原图,分解各通道
float r_up=0;
float r_low=0;
cvGetMinMaxHistValue(r_img,&r_low,&r_up,NULL,NULL); //求的r_img中的,最大值r_up,最小值r_low
cvAddWeighted(r_img,r_up,r_img,r_low,0,r_img);//得出的r_img,就是加权后的值;
再分别对b_img, g_img进行同样的操作。
cvMerge(b_img,g_img,r_img,dst);//dst为输出图像
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询