工具:Mathematica 我使用的时11.3的版本
背景:
多光谱图像,共5个通道。但是,由于5个通道的图像是由5个镜头拍摄的,所以图片拍出来并不是自动匹配,需要手动匹配图像。匹配后,需要对图像做裁剪,减去不匹配的地方。同时,考虑到使用python的PIL读取图像时,读取4通道一下的uint8存储的图像不会由问题,所以将匹配裁剪后的图像在分离为5个通道的图片并单独保存。
读取图像,
可以直接拖拽图片到=后面来读取该图片
a1 = Import["C:\\Users\\mlxuan\\Documents\\IMG_0130\\IMG_0130_1.tif"]
a2 = Import["C:\\Users\\mlxuan\\Documents\\IMG_0130\\IMG_0130_2.tif"]
a3 = Import["C:\\Users\\mlxuan\\Documents\\IMG_0130\\IMG_0130_3.tif"]
a4 = Import["C:\\Users\\mlxuan\\Documents\\IMG_0130\\IMG_0130_4.tif"]
a5 = Import["C:\\Users\\mlxuan\\Documents\\IMG_0130\\IMG_0130_5.tif"]
1.配准
b1 = ImageAlign[a5, a1,Method -> {"Keypoints", {"ORB", "KAZE"}}]
b2 = ImageAlign[a5, a2,Method -> {"Keypoints", {"ORB", "KAZE"}}]
b3 = ImageAlign[a5, a3,Method -> {"Keypoints", {"ORB", "KAZE"}}]
b4 = ImageAlign[a5, a4,Method -> {"Keypoints", {"ORB", "KAZE"}}]
2.融合为一张图
cRGBNIRRE = ColorCombine[{b3, b2, b1, b4, a5}]#融合成为5通道的图片
cRGB = ColorCombine[{b3, b2, b1}] #融合为RGB通道的可见光图片
需要注意观察融合结果,看是否匹配上。因为该软件不能确保一定匹配的很好。
3.裁剪
crRGBNIRRE = ImageTrim[cRGBNIRRE, {{10, 50}, {1208, 948}}] #对5通道的数据裁剪,裁剪后图像大小为900*1200
Export["C:\\Users\\mlxuan\\Documents\\020\\020_RGB_NIRRE.tif",
crRGBNIRRE, "TIFF", "Bitwise" -> 8] #保存裁剪后5通道的图片
4.将裁剪后的图按每个通道分割为多张图
d = ColorSeparate[crRGBNIRRE] #将图片crRGBNIRRE 按照通道分成一张张地图片
cRGB = ColorCombine[{d[[1]], d[[2]], d[[3]]}] #由于我们的多光谱图像,前3个通道分别为RGB,所以这里合成一张可见光图像方便观察
Export["C:\\Users\\mlxuan\\Documents\\020\\020_RGB.tif", cRGB, "TIFF", "Bitwise" -> 8] #保存RGB图像为tiff格式
Export["C:\\Users\\mlxuan\\Documents\\020\\020_RGB.jpg", cRGB, "JPEG", "Bitwise" -> 8] #保存图片d中各个通道的图像,保存为无法好8bit的格式
Export["C:\\Users\\mlxuan\\Documents\\020\\020_1.tif", d[[1]], "TIFF", "Bitwise" -> 8]
Export["C:\\Users\\mlxuan\\Documents\\020\\020_2.tif", d[[2]], "TIFF", "Bitwise" -> 8]
Export["C:\\Users\\mlxuan\\Documents\\020\\020_3.tif", d[[3]], "TIFF", "Bitwise" -> 8]
Export["C:\\Users\\mlxuan\\Documents\\020\\020_4.tif", d[[4]], "TIFF", "Bitwise" -> 8]
Export["C:\\Users\\mlxuan\\Documents\\020\\020_5.tif", d[[5]], "TIFF", "Bitwise" -> 8]