我有2张图片如下:
我想自动将它们组合在一起,希望它可以在Java中完成
如何检测像素位置并校正边缘以合并两个图像,因为两个图像都有重叠并且不知道哪个是要合并的正确边缘?可以提供任何算法吗?
答案 0 :(得分:1)
ImageJ是一个非常好的java图像处理库。它可能有插件可以做到这一点,所以也许值得一试。
我首先尝试在两个图像中找到相同的位置。在两个图像上垂直绘制线条轮廓,并查看像素值和y值是否相同。如果图像只在一个位置完全相同,那么应该很容易。如果有多个像素相同的位置或者y方向的像素从不相同,那么我认为你的问题可能没有一个单一的解决方案。
以下是一些可以帮助您入门的代码
public class CombineImages implements PlugIn
{
@Override
public void run(String arg0) {
// TODO Auto-generated method stub
}
public ImagePlus combineImages(ImageProcessor ip1, ImageProcessor ip2){
//Get a line of Y pixel values for the first image for each x position and add them to a list
ArrayList<Roi> roiList1 = new ArrayList<Roi>();
for(int i=0; i<ip1.getWidth()-1; i++){
Roi roi = new Roi(i,i+1,1, ip1.getHeight());
roiList1.add(roi);
}
//Get a line of Y pixel values for the second image for each x position and add them to a list
ArrayList<Roi> roiList2 = new ArrayList<Roi>();
for(int i=0; i<ip2.getWidth()-1; i++){
Roi roi = new Roi(i,i+1,1, ip2.getHeight());
roiList2.add(roi);
}
//Check if these are the same and return the X values for both images that these correspond to
//You can then crop and combine the pixel values
return null;
}
}