2013-03-30 4 views
1

이전에 서로 꿰매어 졌던 하나의 이미지에서 개별 이미지를 추출하여 처리해야합니다. 예 : 아래 그림과 같이 네 개의 독립적 인 이미지를 하나 개의 이미지를 생성하는 스티치됩니다하나의 이미지에서 이전에 꿰매어 진 이미지 수를 결정할 때 문제가 발생합니다.

Previously stitched image

이미지 처리에 대한 새로운 인 제가 조사를 좀 해봤 내 요구 사항에 적합한 Java Image IO을 발견했다.

이미지 추출 및 처리

ImageInputStream oldImage = ImageIO 
      .createImageInputStream(new FileInputStream("Four_Image_Stitched.jpeg")); 

    ImageReader imageReader = getImageReader(imageFormat); 
    imageReader.setInput(oldImage); 

    int nosOfImages = imageReader.getNumImages(true); 
    System.out.println("Number of Images = " + nosOfImages); 
    if (nosOfImages > 1) { 
     for (int i = 0; i < nosOfImages; i++) { 
      BufferedImage image = imageReader.read(i); 
      // do some processing 
     } 
    } 

가져 오기 이미지 리더 인스턴스

private ImageReader getImageReader(String imageFormat) { 

    if ("PNG".equalsIgnoreCase(imageFormat)) { 
     return new PNGImageReader(new PNGImageReaderSpi()); 
    } 
    if ("JPEG".equalsIgnoreCase(imageFormat)) { 
     return new JPEGImageReader(new JPEGImageReaderSpi()); 
    } 
    if ("GIF".equalsIgnoreCase(imageFormat)) { 
     return new GIFImageReader(new GIFImageReaderSpi()); 
    } 
    if ("BMP".equalsIgnoreCase(imageFormat)) { 
     return new BMPImageReader(new BMPImageReaderSpi()); 
    } 
    return null; 
} 

문제는 여기에 imageReader.getNumImages(true) 항상 1를 반환한다 :

내가 지금까지 쓴 것입니다 모든 형식 및 관계없이 스티칭 된 이미지의 수; 나는 실제 이미지 수를 스티칭해야하고 구체적으로 언급 된 예제에서 4이라고 가정합니다.

정확히 여기 내가 누락 된 것이 확실하지 않습니다!

이와 관련하여 도움이나 조언을 주시면 감사하겠습니다.

P.S : 하나의 이미지가 스티치 이미지, 다른 차원 각각의 n 수를 포함 할 수 있습니다 손 전에 하나에 스티치 이미지
번호는 알 수 없습니다.

+2

나는 이것이 'getNumImages'가 무엇을위한 것인지가 확실하지 않습니다. 나는 여러 개의 이미지 (예 : 애니메이션 GIF)가있는 포맷이 아니라 이전에 파트에서 어셈블 된 ** 이미지가있는 포맷을위한 것임을 믿습니다. 나는 당신이 그들을 식별 할 수있는 유일한 방법은 급격한 색 변환으로 직사각형을 찾는 것이라고 의심합니다. –

+0

@ Javabond : 죄송합니다. 중요한 이미지 처리를 한 적이 없습니다. 행운을 빕니다, –

답변

1

stiched 이미지가 어떻게 든 전체 이미지 안에 별도로 저장되어 있다고 생각합니까? 그것은 (거의 확실한) 케이스가 아닙니다. 네 이미지가 하나의 이미지에 저장되어 저장되면, 하나의 이미지 - 픽셀 행렬 -을 가지며, 이미지가 N 개의 이미지로 구성되었다고 말할 수 없습니다. 색상의 급격한 변화를 감지하는 휴리스틱 알고리즘 일부 이미지 처리 getNumImages() 텍스트 문서의 "페이지"와 같이 내부에 여러 개의 하위 이미지를 허용하는 특수 이미지 형식 인 경우에만 해당합니다. 일반적으로 애니메이션의 프레임입니다.

예와 같이 간단한 경우, 간단한 가장자리 감지기로 충분할 수 있습니다.