List of usage examples for android.hardware.camera2 CameraCharacteristics SENSOR_BLACK_LEVEL_PATTERN
Key SENSOR_BLACK_LEVEL_PATTERN
To view the source code for android.hardware.camera2 CameraCharacteristics SENSOR_BLACK_LEVEL_PATTERN.
Click Source Link
A fixed black level offset for each of the color filter arrangement (CFA) mosaic channels.
This key specifies the zero light value for each of the CFA mosaic channels in the camera sensor.
From source file:freed.cam.apis.camera2.modules.PictureModuleApi2.java
@NonNull private DngProfile getDngProfile(int rawFormat, ImageHolder image) { int black = cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_BLACK_LEVEL_PATTERN) .getOffsetForIndex(0, 0);/*from w w w .j a va 2 s . com*/ int c = cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_INFO_COLOR_FILTER_ARRANGEMENT); String colorpattern; int[] cfaOut = new int[4]; switch (c) { case 1: colorpattern = DngProfile.GRBG; cfaOut[0] = 1; cfaOut[1] = 0; cfaOut[2] = 2; cfaOut[3] = 1; break; case 2: colorpattern = DngProfile.GBRG; cfaOut[0] = 1; cfaOut[1] = 2; cfaOut[2] = 0; cfaOut[3] = 1; break; case 3: colorpattern = DngProfile.BGGR; cfaOut[0] = 2; cfaOut[1] = 1; cfaOut[2] = 1; cfaOut[3] = 0; break; default: colorpattern = DngProfile.RGGB; cfaOut[0] = 0; cfaOut[1] = 1; cfaOut[2] = 1; cfaOut[3] = 2; break; } float[] color2; float[] color1; float[] neutral = new float[3]; float[] forward2 = null; float[] forward1 = null; float[] reduction1 = null; float[] reduction2 = null; double[] finalnoise = null; String cmat = appSettingsManager.getApiString(AppSettingsManager.CUSTOMMATRIX); if (cmat != null && !cmat.equals("") && !cmat.equals("off")) { CustomMatrix mat = ((MatrixChooserParameter) parameterHandler.matrixChooser).GetCustomMatrix(cmat); color1 = mat.ColorMatrix1; color2 = mat.ColorMatrix2; neutral = mat.NeutralMatrix; if (mat.ForwardMatrix1.length > 0) forward1 = mat.ForwardMatrix1; if (mat.ForwardMatrix2.length > 0) forward2 = mat.ForwardMatrix2; if (mat.ReductionMatrix1.length > 0) reduction1 = mat.ReductionMatrix1; if (mat.ReductionMatrix2.length > 0) reduction2 = mat.ReductionMatrix2; if (mat.NoiseReductionMatrix.length > 0) finalnoise = mat.NoiseReductionMatrix; } else { color1 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_COLOR_TRANSFORM1)); color2 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_COLOR_TRANSFORM2)); Rational[] n = image.getCaptureResult().get(CaptureResult.SENSOR_NEUTRAL_COLOR_POINT); neutral[0] = n[0].floatValue(); neutral[1] = n[1].floatValue(); neutral[2] = n[2].floatValue(); forward2 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_FORWARD_MATRIX2)); //0.820300f, -0.218800f, 0.359400f, 0.343800f, 0.570300f,0.093800f, 0.015600f, -0.726600f, 1.539100f forward1 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_FORWARD_MATRIX1)); reduction1 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_CALIBRATION_TRANSFORM1)); reduction2 = getFloatMatrix( cameraHolder.characteristics.get(CameraCharacteristics.SENSOR_CALIBRATION_TRANSFORM2)); //noise Pair[] p = image.getCaptureResult().get(CaptureResult.SENSOR_NOISE_PROFILE); double[] noiseys = new double[p.length * 2]; int i = 0; for (int h = 0; h < p.length; h++) { noiseys[i++] = (double) p[h].first; noiseys[i++] = (double) p[h].second; } double[] noise = new double[6]; int[] cfaPlaneColor = { 0, 1, 2 }; generateNoiseProfile(noiseys, cfaOut, cfaPlaneColor, 3, noise); finalnoise = new double[6]; for (i = 0; i < noise.length; i++) if (noise[i] > 2 || noise[i] < -2) finalnoise[i] = 0; else finalnoise[i] = (float) noise[i]; //noise end } return DngProfile.getProfile(black, image.getImage().getWidth(), image.getImage().getHeight(), rawFormat, colorpattern, 0, color1, color2, neutral, forward1, forward2, reduction1, reduction2, finalnoise); }