資源簡介
兩幅圖像一種高分辨率全色,一種低分辨率多光譜,融合后成為高分辨率多光譜
代碼片段和文件信息
#include?“opencv.hpp“
#include??
#include?
#include??
#include?“math.h“
using?namespace?std;
using?namespace?cv;
extern?“C“?__declspec(dllexport)void?weighted_merge();
Mat?_merge2(Mat?high_picMat?mul_picint?heightint?width)
{
Mat?output(heightwidthCV_8UC3);
unsigned?char?*?pBmp?=?output.data;
unsigned?char?*?pmul?=?mul_pic.data;
unsigned?char?*?ph?=?high_pic.data;
double?P1P2P3S1S2S3;
P1=0;P2=0;P3=0;S1=0;S2=0;S3=0;
for?(int?i=0;i {
for?(int?j=0;j {
P1+=ph[(i*width+j)*3+0];
P2+=ph[(i*width+j)*3+1];
P3+=ph[(i*width+j)*3+2];
S1+=pmul[(i*width+j)*3+0]; ?//B
S2+=pmul[(i*width+j)*3+1]; //G
S3+=pmul[(i*width+j)*3+2]; ?//R
}
}
P1=P1/(height*width);
P2=P2/(height*width);
P3=P3/(height*width);
S1=S1/(height*width);
S2=S2/(height*width);
S3=S3/(height*width);
//計算σ12σ1σ2
double?σ1_1=0;
double?σ2_1=0;
double?σ12_1=0;
double?σ1_2=0;
double?σ2_2=0;
double?σ12_2=0;
double?σ1_3=0;
double?σ2_3=0;
double?σ12_3=0;
for(int?i=0;i {
for(int?j=0;j {
σ1_1+=(ph[(i*width+j)*3+0]-P1)*(ph[(i*width+j)*3+0]-P1);
σ2_1+=(pmul[(i*width+j)*3+0]-S1)*(pmul[(i*width+j)*3+0]-S1);
σ12_1+=(ph[(i*width+j)*3+0]-P1)*(pmul[(i*width+j)*3+0]-S1);
σ1_2+=(ph[(i*width+j)*3+1]-P2)*(ph[(i*width+j)*3+1]-P2);
σ2_2+=(pmul[(i*width+j)*3+1]-S2)*(pmul[(i*width+j)*3+1]-S2);
σ12_2+=(ph[(i*width+j)*3+1]-P2)*(pmul[(i*width+j)*3+1]-S2);
σ1_3+=(ph[(i*width+j)*3+2]-P3)*(ph[(i*width+j)*3+2]-P3);
σ2_3+=(pmul[(i*width+j)*3+2]-S3)*(pmul[(i*width+j)*3+2]-S3);
σ12_3+=(ph[(i*width+j)*3+2]-P3)*(pmul[(i*width+j)*3+2]-S3);
}
}
σ1_1=sqrt(σ1_1);
σ2_1=sqrt(σ2_1);
σ1_2=sqrt(σ1_2);
σ2_2=sqrt(σ2_2);
σ1_3=sqrt(σ1_3);
σ2_3=sqrt(σ2_3);
//計算相關系數r
double?r1r2r3;
r1=σ12_1/(σ1_1*σ2_1);
r2=σ12_2/(σ1_2*σ2_2);
r3=σ12_3/(σ1_3*σ2_3);
for?(int?i=0;i {
for?(int?j=0;j {
if?(pmul[(i*width+j)*3+0]==0&&pmul[(i*width+j)*3+1]==0&&pmul[(i*width+j)*3+2]==0)
{
pBmp[(i*width+j)*3+0]?=ph[(i*width+j)*3+0];???//B
pBmp[(i*width+j)*3+1]?=ph[(i*width+j)*3+1];??//G
pBmp[(i*width+j)*3+2]?=ph[(i*width+j)*3+2];???//R
}
else{
pBmp[(i*width+j)*3+0]?=((1-r1)*pmul[(i*width+j)*3+0]+(1+r1)*ph[(i*width+j)*3+0])/2;???//B
pBmp[(i*width+j)*3+1]?=((1-r2)*pmul[(i*width+j)*3+1]+(1+r2)*ph[(i*width+j)*3+1])/2;??//G
pBmp[(i*width+j)*3+2]?=((1-r3)*pmul[(i*width+j)*3+2]+(1+r3)*ph[(i*width+j)*3+2])/2;????//R
}
}
}
return?output;
}
void?weighted_merge()
{
Mat?high_pic=imread(“sp_yc.bmp“1);
Mat?mul_pic_1=imread(“tm1.bmp“0);
Mat?mul_pic_3=imread(“tm3.bmp“0);
Mat?mul_pic_4=imread(“tm4.bmp“0);
Mat?mul_pic;
Mat?channel[3];
channel[0]=mul_pic_1;
channel[1]=mul_pic_3;
channel[2]=mul_pic_4;
merge(channel3mul_pic);
//imshow(“1“mul_pic);
Mat?dstImage_mul;
resize(mul_picdstImage_mulSize(mul_pic.cols*3mul_pic.r
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-01?12:16??加權融合\Debug\
?????目錄???????????0??2019-06-01?15:27??加權融合\ipch\
?????目錄???????????0??2019-06-01?15:27??加權融合\ipch\加權融合-a24e0c65\
?????文件????69206016??2019-06-01?16:27??加權融合\ipch\加權融合-a24e0c65\加權融合-1532d6e2.ipch
?????目錄???????????0??2019-06-01?12:16??加權融合\x64\
?????目錄???????????0??2019-06-01?12:23??加權融合\x64\Debug\
?????文件??????109568??2019-06-01?12:23??加權融合\x64\Debug\加權融合.dll
?????文件?????????707??2019-06-01?12:23??加權融合\x64\Debug\加權融合.exp
?????文件??????583956??2019-06-01?12:23??加權融合\x64\Debug\加權融合.ilk
?????文件????????1826??2019-06-01?12:23??加權融合\x64\Debug\加權融合.lib
?????文件?????1838080??2019-06-01?12:23??加權融合\x64\Debug\加權融合.pdb
?????文件????16732160??2019-06-01?17:22??加權融合\加權融合.sdf
?????文件????????1257??2019-06-01?12:16??加權融合\加權融合.sln
?????文件???????15360??2019-06-01?17:22??加權融合\加權融合.suo
?????目錄???????????0??2019-06-01?12:16??加權融合\加權融合\
?????目錄???????????0??2019-06-01?12:16??加權融合\加權融合\Debug\
?????文件?????????654??2019-06-01?12:16??加權融合\加權融合\Debug\cl.command.1.tlog
?????文件???????33370??2019-06-01?12:16??加權融合\加權融合\Debug\CL.read.1.tlog
?????文件?????????234??2019-06-01?12:16??加權融合\加權融合\Debug\CL.write.1.tlog
?????文件???????????2??2019-06-01?12:16??加權融合\加權融合\Debug\li
?????文件???????????2??2019-06-01?12:16??加權融合\加權融合\Debug\li
?????文件???????????2??2019-06-01?12:16??加權融合\加權融合\Debug\li
?????文件?????????434??2019-06-01?12:16??加權融合\加權融合\Debug\rc.command.1.tlog
?????文件?????????210??2019-06-01?12:16??加權融合\加權融合\Debug\rc.read.1.tlog
?????文件?????????218??2019-06-01?12:16??加權融合\加權融合\Debug\rc.write.1.tlog
?????文件??????830464??2019-06-01?12:16??加權融合\加權融合\Debug\vc100.idb
?????文件?????1380352??2019-06-01?12:16??加權融合\加權融合\Debug\vc100.pdb
?????文件???????????2??2019-06-01?12:16??加權融合\加權融合\Debug\加權融合.dll.em
?????文件??????????68??2019-06-01?12:16??加權融合\加權融合\Debug\加權融合.dll.em
?????文件??????????68??2019-06-01?12:16??加權融合\加權融合\Debug\加權融合.lastbuildstate
?????文件????????3098??2019-06-01?12:16??加權融合\加權融合\Debug\加權融合.log
............此處省略39個文件信息
- 上一篇:非加權融合.zip
- 下一篇:地理信息系統實習教程第3版配套數據
評論
共有 條評論