2016-06-04 1 views
1

나는 멍청한 놈의 비트 해요, 나는 가능한 언어에 대해 많은 것을 배우고 최선을 다하기 위해 노력했습니다. 최근에 저는 RGB 데이터에 대해 픽셀 단위로 이미지를 분석하는 논리를 배우기 시작했습니다. 이 일을하는 동안 나는 기본적으로 tiffs.I've 디코딩 및 이미지를 .svs 표시 여러 오픈 소스 프로젝트를 탐구 다층하는이 매우 높은 품질의 파일은 SVS 파일 우연히, 그러나 디코딩하는 알고리즘이나 코드를 찾을 수 없습니다 .svs 파일. 누군가가 내가 한 같은 크고 복잡한 이미지 파일을 디코딩에 대해 갈 것이라고 방식에 깊은 관심 등의 SVS 파일을 디코딩 알고리즘을 포함하는 것이 오픈 소스 프로젝트의 내부에 어떤 파일 (들)에 저를 직접, 또는 수 없습니다 누군가가 Java에서 .svs 파일을 디코딩하는 알고리즘을 도와줍니다. 미리 감사드립니다!Java에서 .svs 이미지 파일의 RGB 데이터를 어떻게 찾을 수 있습니까? 이 자바에 관해서

링크 :

https://github.com/openslide/openslide-java

https://github.com/imagej/imagej

+0

SVS 파일 *은 "기본적으로 다중 레이어 티프"*입니다. 그러나 TIFF 형식은 다른 픽셀 형식, 이미지 레이아웃, 압축 형식 등을 허용합니다. 매우 복잡합니다. SVS 샘플 파일 몇 개를 다운로드했으며 JPEG 및 JPEG 2000 (J2K) 데이터가 포함되어 있습니다. 따라서 디코드 할 알고리즘이 하나도 없으므로 TIFF 구조를 구문 분석 한 다음 스트립/타일에서 이미지의 압축을 풀고 다시 어셈블해야합니다. 내 [TwelveMonkeys ImageIO] (https://github.com/haraldk/TwelveMonkeys) 라이브러리는 J2K 데이터를 제외하고 소스를 보거나 그냥 사용하려는 경우 잘 열어 보입니다. – haraldK

+0

@haraldK 답장을 보내 주셔서 감사합니다. TIFF 구조를 구문 분석하고 압축을 풀고 다시 어셈블하는 방법을 자세히 설명해 주시겠습니까? 이 작업을 수행하기 위해 TwelveMonkeys 라이브러리를 어떻게 사용합니까? 정말 고마워! –

답변

0
당신이 openslide에서 Aperio 디코더가 필요하므로

SVS 파일은 Aperio 스캐너에 의해 생성된다 : 일부 문서가

https://github.com/openslide/openslide/blob/master/src/openslide-vendor-aperio.c

openslide을 여기에 형식 :

http://openslide.org/formats/aperio/

세부 사항을 이해하는 것은 흥미롭지 만 매우 유용하지는 않습니다. 자바에서 직접 읽고 싶다면, 당신은 바인딩 우수한 openslide, 또는 바인딩 libtiff 플러스 여분의 코드를 많이 사용할 수 있습니다.

0

앞서 언급했듯이 Aperio에서 만든 .svs 파일은 단지 TIFF files (일부 제한 사항과 약간의 확장자가 있음)입니다.

그것은 당신이 단지 기존 라이브러리를 사용하여 이러한 파일에서 이미지를 읽을 것인지 질문에서 명확하지 않다, 또는 당신이 (그렇지 않으면 교육 목적 또는에 대한) 자신에 대한 이러한 솔루션을 개발하고자합니다.

후자의 경우 "새로운"JPEG 압축을 지정하는 Adobe 기술 노트 및 Aperio SVS 형식에 대해 문서화 된 내용을 참조하여 TIFF 6.0 specification을 읽어야합니다. 기존 라이브러리의 소스 코드를 볼 수도 있습니다. 처음부터 TIFF/SVS 리더/디코더를 구현하는 데 필요한 단계를 설명하는 것은 StackOverflow의 응답의 범위를 벗어나는 방법입니다.

그런 경우 Java에서 이러한 파일을 열려면 ImageIO과 TIFF 플러그인 *을 사용하여 대부분 열 수 있어야합니다.

코드는 다음과 같이 간단 할 수있다 :

BufferedImage image = ImageIO.read(new File("path/to/your.svs")); 

이 첫 번째를 읽어, 나는 사양, 파일의 전체 해상도 이미지에서 이해 내용에 따라.이것은 당신이 너무 큰 이미지를 건너 뛸 수

// Create input stream 
File file = new File("path/to/your.svs"); 
try (ImageInputStream input = ImageIO.createImageInputStream(file)) { 
    // Get the reader 
    Iterator<ImageReader> readers = ImageIO.getImageReaders(input); 

    if (!readers.hasNext()) { 
     throw new IllegalArgumentException("No reader for: " + file); 
    } 

    ImageReader reader = readers.next(); 

    try { 
     reader.setInput(input); 

     // Optionally, listen for read warnings, progress, etc. 
     reader.addIIOReadWarningListener(...); 
     reader.addIIOReadProgressListener(...); 

     // Use reader.getNumImages(true) to get the number of images 
     // in the file, and optionally add a loop to read all the images. 

     ImageReadParam param = reader.getDefaultReadParam(); 

     // Optionally, control read settings like subsampling, source region or destination etc. 
     param.setSourceSubsampling(...); 
     param.setSourceRegion(...); 
     param.setDestination(...); 
     // ... 

     // Finally read the image, using settings from param 
     BufferedImage image = reader.read(0, param); 

     // Optionally, read thumbnails, etc... 
     int numThumbs = reader.getNumThumbnails(0); 
     // ... 

     // Optionally, get the image metadata (ie. to get the custom Aperio 
     // values from the ImageDescription tag for further processing) 
     IIOMetadata metadata = reader.getImageMetadata(0); 
     // ... 
    } 
    finally { 
     // Dispose reader in finally block to avoid memory leaks 
     reader.dispose(); 
    } 
} 

: 파일에 (당신은 루프를 추가하면, 모든 이미지 또는)

는 코드가 좀 더 상세하게 특정 이미지를 읽으려면 Java로 표시 ( .svs 파일에는 BufferedImage ...에 대해 너무 큰 이미지가 포함될 수 있음) 또는 독자가 지원하지 않는 사용자 정의 압축이 있습니다 ( .svs 파일에는 기본 JPEG 및 사용자 정의 JPEG 2000로 압축 된 이미지가 포함될 수 있음).

이미지 순서, "미리보기 이미지", "매크로"및 "레이블"이미지를 보려면 사양을 읽어야합니다. "축소판 그림"은 항상 JPEG 스트림이라고 생각합니다. ImageIO에서 대한


*) TIFF 플러그인 :

  • ImageIO에서 가장 일반적인 TIFF 플러그인은 JAI ImageIO에서 (jai_imageio.jar)입니다,하지만 개발에 더 이상, 나는 그것을 테스트하지 않았습니다 .svs 파일

  • 내 프로젝트 인 TwelveMonkeys ImageIO은 적극적으로 개발되었으며 JAI에서 제공하는 것과 호환되지만 버그를 수정하고 누락 된 기능을 추가하는 것을 목표로하는 TIFF 플러그인을 포함합니다. 일부 샘플 .svs 파일을 사용하여이 플러그인을 테스트했으며 비표준 ("TIFF 사양이 아님") JPEG 2000 압축 파일을 제외하고 파일을 읽을 수 있습니다.

  • 내가 아는 TIFF 플러그인이 있지만 이것들을 시도하지 않았습니다.

  • 잘 모르는 특수 목적의 Aperio SVS 플러그인이있을 수도 있습니다.
관련 문제