Java OpenCV-4.0.0 圖像處理20 直方圖比較

Java OpenCV-4.0.0 圖像處理20 直方圖比較

Java OpenCV-4.0.0 直方圖比較

對輸入的兩張圖像計算得到直方圖H1與H2,歸一化到相同的尺度空間
然後可以通過計算H1與H2的之間的距離得到兩個直方圖的相似程度進
而比較圖像本身的相似程度。Opencv提供的比較方法有四種:
Correlation 相關性比較
Chi-Square 卡方比較
Intersection 十字交叉性
Bhattacharyya distance 巴氏距離

1 首先把圖像從RGB色彩空間轉換到HSV色彩空間cvtColor
2 計算圖像的直方圖,然後歸一化到[0~1]之間calcHist和normalize;
3 使用上述四種比較方法之一進行比較compareHist

/**
 * OpenCV-4.0.0 直方圖比較
 *    
 * @return: void  
 * @date: 2019年1月21日 下午10:21:29
 */
public static void compareHist() {
	Mat src = Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\99.jpg");
	Mat dst = new Mat(); 
	Mat gray = new Mat();
	//圖片灰度化
	Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
	//圖片轉HSV
	Imgproc.cvtColor(src,dst,Imgproc.COLOR_BGR2HSV);
	
	MatOfFloat mfloat=new MatOfFloat(0,256);
	MatOfInt mint = new MatOfInt(255);

	List<Mat> matList = new ArrayList<Mat>();
	matList.add(gray);
	Mat hist = new Mat();
	//直方圖計算
	Imgproc.calcHist(matList,new MatOfInt(0),new Mat(),hist,mint ,mfloat);
	//圖片歸一化
	Core.normalize(hist, hist, 1, hist.rows() , Core.NORM_MINMAX, -1, new Mat() ); 
	//直方圖比較
	double a=Imgproc.compareHist(hist,hist,Imgproc.CV_COMP_CORREL);
	System.out.println(a);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章