Wavelet Image Fusion
Wavelet Image Fusion
img1 = [image];img2 = [image];ImageFusion[{img1_Image, wts1_}, {img2_Image, wts2_}, index_ : Automatic] := Module[{dwd, wcoeff, nwcoeff}, dwd = Map[StationaryWaveletTransform[#, CDFWavelet[], 3]&, {img1, img2}];
wcoeff = #[index, {"Image", "ImageFunction" -> Identity}]& /@ dwd;
nwcoeff = MapThread[First[#1] -> ImageAdd[ImageMultiply[Last[#1], wts1], ImageMultiply[Last[#2], wts2]]&, wcoeff];
nwcoeff = Append[nwcoeff, First[dwd[[1]][{0, 0, 0}, {"Image", "ImageFunction" -> (ImageMultiply[#, wts1]&)}]]];
InverseWaveletTransform[DiscreteWaveletData[nwcoeff, CDFWavelet[], StationaryWaveletTransform]]]fimg = ImageFusion[{img1, 1}, {img2, 0.8}, {___, 1 | 2 | 3}];Column[{Row[{Image[img1, ImageSize -> 100], " ", Image[img2, ImageSize -> 100]}, Alignment -> Center], Image[fimg, ImageSize -> 205]}, Alignment -> Center, Spacings -> {0, 0.5}]