2017-06-30 10 views
2

ヒストグラムの均等化を試みていますが、入力と同じイメージを与えています。ヒストグラムイコライゼーションはカラー画像では機能しません

ヒストグラムの均等化には影響がないようです。誰がどこに間違っているのかを教えてくれますか?

private static Mat adjustBrightnessContrast(Mat srcImage){ 
     Mat filterImage = srcImage.clone(); 
     Imgproc.cvtColor(srcImage,filterImage,Imgproc.COLOR_BGR2YCrCb); 
     java.util.List<Mat> filterImageList = new ArrayList<Mat>(3); 
     Core.split(filterImage,filterImageList); 
     Mat luminance = filterImageList.get(0); 
     Imgproc.equalizeHist(luminance,luminance); 
     filterImageList.set(0,luminance); 
     Core.merge(filterImageList,srcImage); 
     Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR); 
     return srcImage; 
    } 

私は何を行っていると、BGAからのYCrCbフォーマットに画像を変換し、その後list形式に画像を変換した後、0である第一チャネル上ヒストグラム等化を行います。 次に、histを実装した後のMatのフォーマットです。 eq。私はlistをそれに置き換えます。最後にmergeのsourceImageでリストを作成します。

しかし、私は入力と同じ出力を得ています。

私はこのイメージにしようとしています:

enter image description here

PS:私はグレイスケール画像が正常に働いていたとして、私は、変換の色の部分にいくつかのミスをやっていると思います。

答えて

3

filterImageListsrcImageにマージしますが、filterImageを使用しています。このコードに置き換えて、filterImageに統合してください:

Core.merge(filterImageList,filterImage); 
Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR); 
関連する問題