android - 如何合并图像并相互叠加

标签 android image-processing android-image

假设我在某些 Framelayout 中上传两张或两张以上的图片。特此,我上传了三张同一个人在所有这三张照片中处于三个不同位置的照片。那么 Android 或 java 或 Native 中的哪些图像处理库可用于执行图片中所示的操作。

我想把多张图片强加给对方。

像这样的:-

Picture with layering facility

一个想法是:

  1. 对所有这些图片进行一些分层,找到图片中不匹配的区域并将它们合并。

如何将多张图片与其他图片合并?通过检查不相似性并相互合并?

是否有任何第三方 Api 或某些 Photoshop 服务可以帮助我进行这些图像处理?

最佳答案

在这种情况下,您不仅仅是在尝试组合图像。您确实希望将包含同一对象的不同位置的场景组合起来。

因此,它不仅仅是一个简单的组合或 alpha 合成,其中输出图像中给定像素的颜色是每个图像中该像素值的总和除以图像数量。

在这种情况下,您可以:

  1. 分析多幅图像不变的像素,确定场景背景。
  2. 首先将输出图像作为背景。
  3. 对于每个图像,移除背景以获得所需的对象并将其与输出图像组合。

有一个Marvin执行此任务的插件称为 MergePhoto。下面的程序使用该插件来组合一组跑酷照片。

import marvin.image.MarvinImage;
import marvin.io.MarvinImageIO;
import marvin.plugin.MarvinImagePlugin;
import marvin.util.MarvinPluginLoader;

public class MergePhotosApp {

public MergePhotosApp(){

    // 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List
    List<MarvinImage> images = new ArrayList<MarvinImage>();
    for(int i=1; i<=5; i++){
        images.add(MarvinImageIO.loadImage("./res/0"+i+".jpg"));
    }

    // 2. Load plug-in and process the image
    MarvinImagePlugin merge = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.combine.mergePhotos");
    merge.setAttribute("threshold", 38);

    // 3. Process the image list and save the output
    MarvinImage output = images.get(0).clone();
    merge.process(images, output);
    MarvinImageIO.saveImage(output, "./res/merge_output.jpg");
}

public static void main(String[] args) {
    new MergePhotosApp();
}
}

输入图像和输出图像如下所示。

enter image description here

关于android - 如何合并图像并相互叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298646/

相关文章:

python - 检测图像上其他物体上附着的小方 block

android - 从 xml 加载时如何更改位图的大小

android - 当我尝试在 Android 平台中使用 Cordova 获取地理定位时出现错误代码 3 超时

android - 将数据从线程传递到 Activity

python - 如何移除移动物体以仅获取背景?

java - 裁剪并保持图像android的大小

android-image - 从路径创建视频缩略图

java - 应用程序在尝试添加标记时抛出异常 "Not in the main thread"

android - 缩放在 android.webkit.WebView 中如何工作?

c++ - 什么是具有自己类类型的良好二维数组替代方案