java图像融合_图像处理之基于高斯金字塔的图像融合

好久之前,当我第一次看到这个算法时候,我就爱上它了,那个时候我不懂什么是高

斯金字塔,但是我知道埃及有金字塔。一番研究之后,搞懂了什么是图像金字塔于是

我写了一篇文章在我的博客上,可以看这里:

但是金字塔有什么应用呢,可能最广泛的一个应用就是实现图像融合和图像的无缝

拼接于是我决定在研究一番,于是就有了这篇文章。好了不废话了。算法需要三张

图片,两张图片是需要拼接的图片,最后一张是面罩图片,为什么需要后面我会解释

面罩图片就是选取待拼接两张图片的目标边缘部分,多少合适根据需要。Demo演示

我是各占原图的1/2这样省事。

算法大致的步骤可以分为如下几步:

1.对两张待拼接的图片分别生成DOG,关于什么是DOG,怎么生成,如果不知道

一定要看看这里:

2.对面罩图片(mask image)完成高斯金字塔,层数要跟DOG层数相同。

3. 根据面罩图片的权重,拼接两张图片的DOG,生成一个DOG图片

4.用生成的DOG图片与maskimage 金字塔expand生成的图片相加得到每层,把每一次

叠加得到最后输出图片。

基于高斯金字塔图像融合的原理:

懂得高斯金字塔DOG的生成原理都明白,如果把金字塔reduce与expand的结果相减则

得到DOG,而如果把expand结果与DOG结果相加则得到reduce处理后的图像,因为

reduce图像是间隔采样生成原图,而高斯金字塔融合正是巧妙的利用了这点。

关键代码解释:

实现目标图像DOG提取代码如下,默认情况下是三层:

PyramidBlendProcessor pyramid = new PyramidBlendProcessor(image1, image2, maskImage);

BufferedImage[] image1Lapls = pyramid.getLaplacianPyramid(pyramid.pyramidDown(image1));

BufferedImage[] image2Lapls = pyramid.getLaplacianPyramid(pyramid.pyramidDown(image2));

BufferedImage[] maskPyramid = pyramid.pyramidDown(maskImage);

依靠mask权重实现两个目标图像DOG按层融合的代码如下:

public BufferedImage blendOneImage(BufferedImage image1, BufferedImage image2, BufferedImage maskImage, BufferedImage blendedImage) {

int width = image1.getWidth();

int height = image1.getHeight();

if ( blendedImage == null )

blendedImage = createCompatibleDestImage( maskImage, null );

int[] image1Pixels = new int[width*height];

int[] image2Pixels = new int[width*height];

int[] maskPixels = new int[width*height];

int[] outPixels = new int[width*height];

getRGB( image1, 0, 0, width, height, image1Pixels );

getRGB( image2, 0, 0, width, height, image2Pixels );

getRGB( maskImage, 0, 0, width, height, maskPixels );

int index = 0;

float mr = 0, mg = 0, mb = 0;

for(int row=0; row

int ta1 = 0, tr1 = 0, tg1 = 0, tb1 = 0;

int ta2 = 0, tr2 = 0, tg2 = 0, tb2 = 0;

int ta3 = 0, tr3 = 0, tg3 = 0, tb3 = 0;

for(int col=0; col

index = row * width + col;

ta1 = (image1Pixels[index] >> 24) & 0xff;

tr1 = (image1Pixels[index] >> 16) & 0xff;

tg1 = (image1Pixels

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值