이미지 처리 맵리 듀스를 HIPI 사용 :
Hipi
는 하둡 이미지 처리 인터페이스입니다. 이렇게하면 Hadoops Distributes File System (HDFS) 및 Mapreduce를 사용하여 대량의 이미지를 처리 할 수있는 일련의 도구와 Inputformat이 제공됩니다. 연루
STPES : hipi 전체 공정에서
2 개 부분으로 분류 될 수있다.
1) 모든 이미지를 대량 파일 (HIPI 이미지 번들)로 변환.
2) HIPI의 이미지 입력 형식을 사용하여 생성 된 대량 이미지 이미지를 처리합니다. 컬부 (culler 클래스) HIPI 낮은 명확성 화상 또는 결함
문제를 걸러 사용이다
내 대량의 화상 처리 시나리오를 시뮬레이션하기 위해, I는 동일한 화상의 복수의 사본을 작성하는 Java 프로그램을 사용 하나의 디렉토리에 다른 이름으로. HIPI 유틸리티를 사용하여 모든 이미지를 대량 파일 (HIPI의 HIP 파일)로 변환했습니다.
모든 이미지가 대량 파일에 있는지 확인하려면 역 프로세스 (변환 된 HIP 파일을 여러 이미지로 변환)를 수행했습니다. 또한 동일한 작업을 수행하는 또 다른 유틸리티가 있습니다. 그러나 나는 모든 이미지를 다시 얻지 못했고, HIPI를 사용하면 일부 이미지가 손실된다는 것을 알게되었습니다.
HIPI를 사용하여 POC를 진행할 수 없었으며 mapreduce를 사용하여 대량 이미지를 처리 할 새 프레임 워크를 만들려고했습니다.
NEW 이미지 프로세싱 프레임 워크 : 여러 맵을 산란을 방지하기 위해
가 (파일 당 각) 우리가 HIPI가하는 등해야, 즉 하나의 번들 파일에 모든 이미지를 변환 할 수있다.
이 번들 파일은 map-reduce의 입력으로 제공됩니다. 이미지 입력 형식은 번들 파일을 구문 분석하고 각 이미지에 해당하는 Buffered Image Object를 작성합니다.
이미지 입력 형식-중요 CLASSES :
이미지 컴 :
은 하나의 번들 파일에 여러 이미지를 병합합니다.
ImageInputFormat :
반환 ImageRecordRreader 및 관리 분할
ImageRecordReader
: 각 분할을 읽고 관리 할 수 있습니다. 각 분할 시작 부분에 대한 파일 포인터의 초기 탐색을 수행하십시오. nextKeyValue() 메서드는 분할에서 각 Image를 읽고 BufferedImage로 변환합니다. BufferedImageWritable :
지도 축소의 키 값 클래스는 쓰기 가능한 직렬화 가능 유형이어야하므로 BufferedImage를지도 메소드의 값으로 직접 저장할 수 없습니다. 이것은, BufferedImage를 보관 유지하는 래퍼 클래스입니다.
BufferedImageWritable { BufferedImage img;
@Override
public void readFields(DataInput arg0) throws IOException {
}
@Override
public void write(DataOutput arg0) throws IOException {
}
@Override
public int compareTo(byte[] o) {
return 0;
}
} readFiled (구현되지
), 쓰기() 나는 그나마 내 시나리오 이후은 compareTo() 메소드는 다시 HDFS에 마법사를 저장할.
HDFS (지도 또는 축소)의 이미지를 다시 작성하려면 이러한 모든 방법을 구현해야 할 수 있습니다. write()에서 대량 파일을 생성하는 동안 이미지를 작성하는 것처럼 이미지를 저장하는 논리를 작성해야 할 수도 있습니다. readFiled()는 write()의 반대 논리를 포함해야합니다. compareTo()는 map-reduce에서이 이미지를 키로 사용하지 않기 때문에 구현할 필요가 없다. (compareTo()는 map-reduce의 정렬면에서 호출된다.)
이미지를 BufferedImages (이미지 처리를위한 일반적인 Java 클래스)로 가져 오는 중이므로 대부분의 작업을 쉽게 수행 할 수 있습니다. 그러나 HIPI의 경우 이미지는 Hipi의 FloatImage 클래스와 같이지도의 값에서 사용할 수 있으며 그 위에 조작을 수행하는 데 어려움을 느낄 수 있습니다.
이 사용자 지정 입력 형식과 OpenCV를 사용하여 facedetection 프로그램을 성공적으로 구현했습니다.
내가 같은를 개발하는 데 사용되는 코드는 GitHub의
곧 공유됩니다
http://worldofbigdata-inaction.blogspot.in/2017/02/processing-images-in-hadoop-using.html
또 하나의 옵션은 다음과 같습니다 3. 각 개체에 대해 sequencefile를 만듭니다. Sequensfile은 각 객체 이미지에 대한 키 - 값 쌍을 포함합니다. 여기서는 mapfile을 단지 매퍼 하나에 줄 것을 MapReduce에 지시하는 방법을 모르겠습니다. – sunillp