1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
public void compare(BufferedImage image1, BufferedImage image2) throws IOException {
// Temporary grayscale image
JIplImage temp = null;
// Threshod parameters
int floor = 60;
int max = 255;
// Original colored image
JIplImage src1 = new JIplImage(image1);
// Grayscale image
JIplImage dst1 = new JIplImage(image1.getWidth(), image1.getHeight(), 8, 1);
// Processing
JOpenCV.cvCvtColor(src1, dst1, 6);
temp = new JIplImage(image1.getWidth(), image1.getHeight(), 8, 1);
JOpenCV.cvSmooth(dst1, temp, JOpenCV.MEDIAN, 5, 0, 0, 0);
JOpenCV.cvThreshold(temp, dst1, floor, max, 0);
// Original colored image
JIplImage src2 = new JIplImage(image2);
// Grayscale image
JIplImage dst2 = new JIplImage(image2.getWidth(), image2.getHeight(), 8, 1);
JIplImage gray = new JIplImage(image2.getWidth(), image2.getHeight(), 8, 1);
// Processing
JOpenCV.cvCvtColor(src2, gray, 6);
temp = new JIplImage(image2.getWidth(), image2.getHeight(), 8, 1);
JOpenCV.cvSmooth(gray, temp, JOpenCV.MEDIAN, 5, 0, 0, 0);
JOpenCV.cvThreshold(temp, dst2, floor, max, 0);
// Image substraction
JIplImage dst = new JIplImage(image2.getWidth(), image2.getHeight(), 8, 1);
JOpenCV.cvSub(dst2, dst1, temp, 0);
JOpenCV.cvSmooth(temp, dst1, JOpenCV.MEDIAN, 13, 0, 0, 0);
// Image addition
JOpenCV.cvAdd(dst1, gray, dst, 0);
// Display
imgSrc1.setImage(image1);
imgSrc2.setImage(dst2.getBufferedImage());
imgDst.setImage(dst.getBufferedImage());
// Free memory
dst.deallocate();
dst1.deallocate();
dst2.deallocate();
gray.deallocate();
src1.deallocate();
src2.deallocate();
temp.deallocate();
} |
Partager