本文整理汇总了Java中org.opencv.core.Core.sumElems方法的典型用法代码示例。如果您正苦于以下问题:Java Core.sumElems方法的具体用法?Java Core.sumElems怎么用?Java Core.sumElems使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.opencv.core.Core
的用法示例。
在下文中一共展示了Core.sumElems方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: blkEstimateEachChannel
import org.opencv.core.Core; //导入方法依赖的package包/类
public static double blkEstimateEachChannel(Mat blkIm, double airlight, double lambda, double fTrans) {
double Trans = 0.0;
double nTrans = Math.floor(1.0 / fTrans * 128);
double fMinCost = Double.MAX_VALUE;
int numberOfPixels = blkIm.rows() * blkIm.cols() * blkIm.channels();
int nCounter = 0;
while (nCounter < (int) (1 - fTrans) * 10) {
// initial dehazing process to calculate the loss information
Mat channel = blkIm.clone();
channel = preDehaze(channel, airlight, nTrans);
// find the pixels with over-255 value and below-0 value, and
// calculate the sum of information loss
double nSumOfLoss = 0.0;
for (int i = 0; i < channel.rows(); i++) {
for (int j = 0; j < channel.cols(); j++) {
if (channel.get(i, j)[0] > 255.0) nSumOfLoss += (channel.get(i, j)[0] - 255.0) * (channel.get(i, j)[0] - 255.0);
else if (channel.get(i, j)[0] < 0.0) nSumOfLoss += channel.get(i, j)[0] * channel.get(i, j)[0];
}
}
// calculate the value of sum of square out
double nSumOfSquareOuts = Core.sumElems(channel.mul(channel)).val[0];
// calculate the value of sum of out
double nSumOfOuts = Core.sumElems(channel).val[0];
// calculate the mean value of the block image
double fMean = nSumOfOuts / numberOfPixels;
// calculate the cost function
double fCost = lambda * nSumOfLoss / numberOfPixels - (nSumOfSquareOuts / numberOfPixels - fMean * fMean);
// find the minimum cost and the related transmission
if (nCounter == 0 || fMinCost > fCost) {
fMinCost = fCost;
Trans = fTrans;
}
fTrans = fTrans + 0.1;
nTrans = 1.0 / fTrans * 128;
nCounter = nCounter + 1;
}
return Trans;
}
示例2: blkEstimate
import org.opencv.core.Core; //导入方法依赖的package包/类
public static double blkEstimate(Mat blkIm, double[] airlight, double lambda, double fTrans) {
double Trans = 0.0;
double nTrans = Math.floor(1.0 / fTrans * 128);
double fMinCost = Double.MAX_VALUE;
int numberOfPixels = blkIm.rows() * blkIm.cols() * blkIm.channels();
double nCounter = 0.0;
List<Mat> bgr = new ArrayList<>();
Core.split(blkIm, bgr);
while (nCounter < (1.0 - fTrans) * 10) {
// initial dehazing process to calculate the loss information
Mat bChannel = bgr.get(0).clone();
bChannel = preDehaze(bChannel, airlight[0], nTrans);
Mat gChannel = bgr.get(1).clone();
gChannel = preDehaze(gChannel, airlight[1], nTrans);
Mat rChannel = bgr.get(2).clone();
rChannel = preDehaze(rChannel, airlight[2], nTrans);
// find the pixels with over-255 value and below-0 value, and
// calculate the sum of information loss
double nSumOfLoss = 0.0;
for (int i = 0; i < bChannel.rows(); i++) {
for (int j = 0; j < bChannel.cols(); j++) {
if (bChannel.get(i, j)[0] > 255.0) nSumOfLoss += (bChannel.get(i, j)[0] - 255.0) * (bChannel.get(i, j)[0] - 255.0);
else if (bChannel.get(i, j)[0] < 0.0) nSumOfLoss += bChannel.get(i, j)[0] * bChannel.get(i, j)[0];
if (gChannel.get(i, j)[0] > 255.0) nSumOfLoss += (gChannel.get(i, j)[0] - 255.0) * (gChannel.get(i, j)[0] - 255.0);
else if (gChannel.get(i, j)[0] < 0.0) nSumOfLoss += gChannel.get(i, j)[0] * gChannel.get(i, j)[0];
if (rChannel.get(i, j)[0] > 255.0) nSumOfLoss += (rChannel.get(i, j)[0] - 255.0) * (rChannel.get(i, j)[0] - 255.0);
else if (rChannel.get(i, j)[0] < 0.0) nSumOfLoss += rChannel.get(i, j)[0] * rChannel.get(i, j)[0];
}
}
// calculate the value of sum of square out
double nSumOfSquareOuts = Core.sumElems(bChannel.mul(bChannel)).val[0] + Core.sumElems(gChannel.mul(gChannel)).val[0] + Core.sumElems(rChannel.mul(rChannel)).val[0];
// calculate the value of sum of out
double nSumOfOuts = Core.sumElems(bChannel).val[0] + Core.sumElems(gChannel).val[0] + Core.sumElems(rChannel).val[0];
// calculate the mean value of the block image
double fMean = nSumOfOuts / numberOfPixels;
// calculate the cost function
double fCost = lambda * nSumOfLoss / numberOfPixels - (nSumOfSquareOuts / numberOfPixels - fMean * fMean);
// find the minimum cost and the related transmission
if (nCounter == 0 || fMinCost > fCost) {
fMinCost = fCost;
Trans = fTrans;
}
fTrans = fTrans + 0.1;
nTrans = 1.0 / fTrans * 128.0;
nCounter = nCounter + 1;
}
return Trans;
}