现在通过自定义图像接口ImageInputFormat ImageRecordReader等,实现了基于MapReduce的图像处理。
可处理的是常见的图像格式bmp,jpg,png等,但是对于DiCOM等医学图像的处理还处于学习阶段。现在还没实现,目前的想法是利用ImageJ plugin插件实现对DICOM格式的数据进行读取,具体的解析有待进一步学习。加油!望早日实现MapReduce对DICOM图像的处理。
下面是调用opencv的sobel函数,进行处理的结果(附有代码)。
public class Map extends Mapper<Text, Image, Text, Image> {
@Override
public void map(Text key, Image value, Context context)
throws IOException, InterruptedException {
IplImage src = value.getImage();
IplImage dest = cvCreateImage(cvSize(src.width(), src.height()),
src.depth(), src.nChannels());
//实现基于opencv的各种操作
//cvEqualizeHist( src, dest );
cvSobel( src, dest, 1, 0, 3);
cvConvertScale(dest, src, 1.0, 0.0);
context.write(key, new Image(dest,value.getWindow()));
}
}