一千萬個為什麽

搜索

使用JAI創建圖像拼接的問題

我正在嘗試使用JAI創建一個由4個TIF圖像組成的單個馬賽克,每個圖像都是5000 x 5000.我編寫的代碼如下。

    RenderedOp mosaic=null;
    ParameterBlock pbMosaic=new ParameterBlock();
    pbMosaic.add(MosaicDescriptor.MOSAIC_TYPE_OVERLAY);
    RenderedOp in=null;
   //Get 4 tiles and add them to the Mosaic
    in=returnRenderedOp(path,"northwest.tif");
    pbMosaic.addSource(in);
    in=returnRenderedOp(path,"northeast.tif");
    pbMosaic.addSource(in);
    in=returnRenderedOp(path,"southwest.tif");
    pbMosaic.addSource(in);     
    in=returnRenderedOp(path,"southeast.tif");
    pbMosaic.addSource(in);
   //Setup the ImageLayout
    ImageLayout imageLayout=new ImageLayout(0,0,10000,10000);
    imageLayout.setTileWidth(5000);
    imageLayout.setTileHeight(5000);
    imageLayout.setColorModel(in.getColorModel());
    imageLayout.setSampleModel(in.getSampleModel());
    mosaic=JAI.create("mosaic",pbMosaic,new RenderingHints(JAI.KEY_IMAGE_LAYOUT,imageLayout));

問題是所有4張圖像都位於馬賽克左上角的相同位置,因此其他四分之三的圖像都是空的。誰能告訴我如何選擇構成馬賽克的每張圖片的位置,以便每個圖片都出現在正確的位置?

謝謝

伊恩

最佳答案

http://download.oracle.com/docs/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/MosaicDescriptor.html

我認為您誤解了在操作之前為每個源圖像設置minX minY所需的文檔。

northwest.tif應該有minX = 0和minY = 0,

northeast.tif應該有minX = 5000和minY = 0,

southwest.tif應該有minX = 0,minY = 5000和

southeast.tif應該有minx = 5000和minY = 5000

在文檔中,他們建議您通過在反序列化操作上使用呈現提示直接“移動”反序列化文件。

不知何故,馬賽克只是一種正常的合成操作。

轉載註明原文: 使用JAI創建圖像拼接的問題