Java Code Examples for org.opencv.core.Core#extractChannel()
The following examples show how to use
org.opencv.core.Core#extractChannel() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FusionEnhance.java From OptimizedImageEnhance with MIT License | 7 votes |
public static Mat enhance (Mat image, int level) { // color balance Mat img1 = Filters.SimplestColorBalance(image, 5); img1.convertTo(img1, CvType.CV_8UC1); // Perform sRGB to CIE Lab color space conversion Mat LabIm1 = new Mat(); Imgproc.cvtColor(img1, LabIm1, Imgproc.COLOR_BGR2Lab); Mat L1 = new Mat(); Core.extractChannel(LabIm1, L1, 0); // apply CLAHE Mat[] result = applyCLAHE(LabIm1, L1); Mat img2 = result[0]; Mat L2 = result[1]; // calculate normalized weight Mat w1 = calWeight(img1, L1); Mat w2 = calWeight(img2, L2); Mat sumW = new Mat(); Core.add(w1, w2, sumW); Core.divide(w1, sumW, w1); Core.divide(w2, sumW, w2); // merge image1 and image2 return ImgDecompose.fuseTwoImage(w1, img1, w2, img2, level); }
Example 2
Source File: FeatureWeight.java From OptimizedImageEnhance with MIT License | 6 votes |
public static Mat LuminanceWeight(Mat img, Mat L) { Mat bCnl = new Mat(); Core.extractChannel(img, bCnl, 0); bCnl.convertTo(bCnl, CvType.CV_32F); Mat gCnl = new Mat(); Core.extractChannel(img, gCnl, 1); gCnl.convertTo(gCnl, CvType.CV_32F); Mat rCnl = new Mat(); Core.extractChannel(img, rCnl, 2); rCnl.convertTo(rCnl, CvType.CV_32F); Mat lum = new Mat(L.rows(), L.cols(), L.type()); for (int i = 0; i < L.rows(); i++) { for (int j = 0; j < L.cols(); j++) { double data = Math.sqrt( ( Math.pow(bCnl.get(i, j)[0] / 255.0 - L.get(i, j)[0], 2.0) + Math.pow(gCnl.get(i, j)[0] / 255.0 - L.get(i, j)[0], 2.0) + Math.pow(rCnl.get(i, j)[0] / 255.0 - L.get(i, j)[0], 2.0) ) / 3 ); lum.put(i, j, data); } } return lum; }
Example 3
Source File: RemoveBackScatter.java From OptimizedImageEnhance with MIT License | 5 votes |
private static Mat dehazeProcess(Mat img, Mat trans, double[] airlight) { Mat balancedImg = Filters.SimplestColorBalance(img, 5); Mat bCnl = new Mat(); Core.extractChannel(balancedImg, bCnl, 0); Mat gCnl = new Mat(); Core.extractChannel(balancedImg, gCnl, 1); Mat rCnl = new Mat(); Core.extractChannel(balancedImg, rCnl, 2); // get mean value double bMean = Core.mean(bCnl).val[0]; double gMean = Core.mean(gCnl).val[0]; double rMean = Core.mean(rCnl).val[0]; // get transmission map for each channel Mat Tb = trans.clone(); Core.multiply(Tb, new Scalar(Math.max(bMean, Math.max(gMean, rMean)) / bMean * 0.8), Tb); Mat Tg = trans.clone(); Core.multiply(Tg, new Scalar(Math.max(bMean, Math.max(gMean, rMean)) / gMean * 0.9), Tg); Mat Tr = trans.clone(); Core.multiply(Tr, new Scalar(Math.max(bMean, Math.max(gMean, rMean)) / rMean * 0.8), Tr); // dehaze by formula // blue channel Mat bChannel = new Mat(); Core.subtract(bCnl, new Scalar(airlight[0]), bChannel); Core.divide(bChannel, Tb, bChannel); Core.add(bChannel, new Scalar(airlight[0]), bChannel); // green channel Mat gChannel = new Mat(); Core.subtract(gCnl, new Scalar(airlight[1]), gChannel); Core.divide(gChannel, Tg, gChannel); Core.add(gChannel, new Scalar(airlight[1]), gChannel); // red channel Mat rChannel = new Mat(); Core.subtract(rCnl, new Scalar(airlight[2]), rChannel); Core.divide(rChannel, Tr, rChannel); Core.add(rChannel, new Scalar(airlight[2]), rChannel); Mat dehazed = new Mat(); Core.merge(new ArrayList<>(Arrays.asList(bChannel, gChannel, rChannel)), dehazed); return dehazed; }
Example 4
Source File: EnhanceFunc.java From ImageEnhanceViaFusion with MIT License | 4 votes |
public static void main(String[] args) { String imgPath = "images/5.jpg"; Mat image = Imgcodecs.imread(imgPath, Imgcodecs.CV_LOAD_IMAGE_COLOR); new ImShow("original").showImage(image); // color balance Mat img1 = ColorBalance.SimplestColorBalance(image, 5); img1.convertTo(img1, CvType.CV_8UC1); // Perform sRGB to CIE Lab color space conversion Mat LabIm1 = new Mat(); Imgproc.cvtColor(img1, LabIm1, Imgproc.COLOR_BGR2Lab); Mat L1 = new Mat(); Core.extractChannel(LabIm1, L1, 0); // apply CLAHE Mat[] result = applyCLAHE(LabIm1, L1); Mat img2 = result[0]; Mat L2 = result[1]; // calculate normalized weight Mat w1 = calWeight(img1, L1); Mat w2 = calWeight(img2, L2); Mat sumW = new Mat(); Core.add(w1, w2, sumW); Core.divide(w1, sumW, w1); Core.divide(w2, sumW, w2); // construct the gaussian pyramid for weight int level = 5; Mat[] weight1 = Pyramid.GaussianPyramid(w1, level); Mat[] weight2 = Pyramid.GaussianPyramid(w2, level); // construct the laplacian pyramid for input image channel img1.convertTo(img1, CvType.CV_32F); img2.convertTo(img2, CvType.CV_32F); List<Mat> bgr = new ArrayList<Mat>(); Core.split(img1, bgr); Mat[] bCnl1 = Pyramid.LaplacianPyramid(bgr.get(0), level); Mat[] gCnl1 = Pyramid.LaplacianPyramid(bgr.get(1), level); Mat[] rCnl1 = Pyramid.LaplacianPyramid(bgr.get(2), level); bgr.clear(); Core.split(img2, bgr); Mat[] bCnl2 = Pyramid.LaplacianPyramid(bgr.get(0), level); Mat[] gCnl2 = Pyramid.LaplacianPyramid(bgr.get(1), level); Mat[] rCnl2 = Pyramid.LaplacianPyramid(bgr.get(2), level); // fusion process Mat[] bCnl = new Mat[level]; Mat[] gCnl = new Mat[level]; Mat[] rCnl = new Mat[level]; for (int i = 0; i < level; i++) { Mat cn = new Mat(); Core.add(bCnl1[i].mul(weight1[i]), bCnl2[i].mul(weight2[i]), cn); bCnl[i] = cn.clone(); Core.add(gCnl1[i].mul(weight1[i]), gCnl2[i].mul(weight2[i]), cn); gCnl[i] = cn.clone(); Core.add(rCnl1[i].mul(weight1[i]), rCnl2[i].mul(weight2[i]), cn); rCnl[i] = cn.clone(); } // reconstruct & output Mat bChannel = Pyramid.PyramidReconstruct(bCnl); Mat gChannel = Pyramid.PyramidReconstruct(gCnl); Mat rChannel = Pyramid.PyramidReconstruct(rCnl); Mat fusion = new Mat(); Core.merge(new ArrayList<Mat>(Arrays.asList(bChannel, gChannel, rChannel)), fusion); fusion.convertTo(fusion, CvType.CV_8UC1); new ImShow("fusion").showImage(fusion); }
Example 5
Source File: AbstractOpenCVFrameWorker.java From Camdroid with Apache License 2.0 | 4 votes |
protected Mat split(Mat mat, int c) { Core.extractChannel(mat, this.split, c); return this.split; }