ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android OpenCV(三):图像像素值统计

2020-01-24 09:04:46  阅读:383  来源: 互联网

标签:tmp maxVal minVal 像素 OpenCV 标准差 图像 Android public


图像像素值统计

  • 图像像素最大值、最小值以及位置
  • 图像均值、标准差

查找最大值、最小值

API

public static MinMaxLocResult minMaxLoc(Mat src, Mat mask)
  • 参数src:输入的图像矩阵

  • 参数mask:可选的掩码矩阵

  • 返回值 MinMaxLocResult:记录最小值、最大值及其位置

    public static class MinMaxLocResult {
        public double minVal;
        public double maxVal;
        public Point minLoc;
        public Point maxLoc;
    
    
        public MinMaxLocResult() {
            minVal=0; maxVal=0;
            minLoc=new Point();
            maxLoc=new Point();
        }
    }
    
  • 函数要求输入图像必须是单通道

寻找图像矩阵最大值最小值及其位置

由于只能输入单通道图片,所以先分离后执行计算操作

private fun minMaxLoc(source: Mat) {
    val bgrList = ArrayList<Mat>()
    Core.split(source, bgrList)

    var minLoc = Point()
    var maxLoc = Point()
    var minVal = 255.0
    var maxVal = 0.0
    var minCha = 0
    var maxCha = 0
    for (index in 0 until bgrList.size) {
        val tmp = Core.minMaxLoc(bgrList[index])
        if (tmp.minVal < minVal) {
            minVal = tmp.minVal
            minLoc = tmp.minLoc
            minCha = index
        }
        if (tmp.maxVal > maxVal) {
            maxVal = tmp.maxVal
            maxLoc = tmp.maxLoc
            maxCha = index
        }
    }
    val tmp =
        "最小值 = $minVal, 位于${minCha}通道${minLoc}\n最大值 = $maxVal, 位于${maxCha}通道${maxLoc}\n"
    message += tmp

    for (current in bgrList) {
        current.release()
    }
}

均值与标准差

概念

  • 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小;

  • 标准差又常称均方差,是离均差平方的算术平均数的平方根,用σ表示。在概率统计中最常使用作为统计分布程度上的测量。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好。

API

public static void meanStdDev(Mat src, MatOfDouble mean, MatOfDouble stddev, Mat mask)
  • 参数src:输入的图像矩阵
  • 参数mean:输出图像像素均值矩阵
  • 参数stddev:输出的图像像素方差j矩阵
  • 参数mask:可选的掩码矩阵

计算图像矩阵均值和标准差

private fun meanStdDev(source: Mat) {
    val mean = MatOfDouble()
    val stdDev = MatOfDouble()
    Core.meanStdDev(source, mean, stdDev)
    val tmp = "平均值:${mean.toList()}\n方差:${stdDev.toList()}\n"
    message += tmp
    mean.release()
    stdDev.release()
}

计算结果

源码

https://github.com/onlyloveyd/LearningAndroidOpenCV

扫描左方二维码关注持续更新

onlyloveyd 博客专家 发布了160 篇原创文章 · 获赞 265 · 访问量 32万+ 他的留言板 关注

标签:tmp,maxVal,minVal,像素,OpenCV,标准差,图像,Android,public
来源: https://blog.csdn.net/poorkick/article/details/104077782

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有