美文网首页
010 图像像素值统计

010 图像像素值统计

作者: 几时见得清梦 | 来源:发表于2019-08-11 11:35 被阅读0次
  • 用途:统计直方图;求取图像像素最大值、最小值,对图像进行归一化;求取图像均值、方差,进行分割或归一化;根据方差判断图像中信息量多少(若方差很小则说明图像像素间差异小,有效信息少);
  • 两个API:
    1. minMaxLoc:可用于模板匹配,找到匹配的点在哪里。
    2. meanStdDev:对于一些图像,若方差比较小,则图像携带的信息量少。
  1. 根据图像均值进行二值化
根据图像均值对灰度图像进行二值化/分割

C++

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char *argv[])
{
    Mat src = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input", WINDOW_AUTOSIZE);
    imshow("input", src);

    double minVal; double maxVal; Point minLoc; Point maxLoc; // 先定义
    minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc, Mat()); // 通过引用对变量写入值
    printf("min: %.2f, max: %.2f \n", minVal, maxVal);
    printf("min loc: (%d, %d) \n", minLoc.x, minLoc.y);
    printf("max loc: (%d, %d)\n", maxLoc.x, maxLoc.y);

    // 彩色图像 三通道的 均值与方差
    src = imread("D:/vcprojects/images/test.png");
    Mat means, stddev; // 均值和方差不是一个值。对彩色图像是三行一列的mat
    meanStdDev(src, means, stddev);
    printf("blue channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(0, 0), stddev.at<double>(0, 0));
    printf("green channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(1, 0), stddev.at<double>(1, 0));
    printf("red channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(2, 0), stddev.at<double>(2, 0));


    waitKey(0);
    return 0;
}

Python

import cv2 as cv
import numpy as np

src = cv.imread("D:/vcprojects/images/test.png", cv.IMREAD_GRAYSCALE) # 读入灰度图
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

min, max, minLoc, maxLoc = cv.minMaxLoc(src) # 对灰度图像计算最大最小像素值及位置
print("min: %.2f, max: %.2f"% (min, max))
print("min loc: ", minLoc)
print("max loc: ", maxLoc)

means, stddev = cv.meanStdDev(src) # 计算图像均值和方差。对单通道返回一个值,对三通道返回三个值。
print("mean: %.2f, stddev: %.2f"% (means, stddev))
src[np.where(src < means)] = 0
src[np.where(src > means)] = 255
cv.imshow("binary", src)

cv.waitKey(0)
cv.destroyAllWindows()

相关文章

  • 010 图像像素值统计

    用途:统计直方图;求取图像像素最大值、最小值,对图像进行归一化;求取图像均值、方差,进行分割或归一化;根据方差判断...

  • 概述

    课程大纲: 1、图像的基本构成2、像素读写3、图像像素值统计信息4、像素值数学运算5、图像RGB彩色空间6、色彩空...

  • 2.1 Core - 图像基本操作

    目标 访问像素值并修改它们 访问图像属性 设置图像区域(ROI) 分割和合并图像 访问和修改像素值 您可以通过像素...

  • 图像处理

    第三章 图像处理 1.点操作 输出图像的像素值仅仅由输入图像的像素值决定。 1.1 像素变换 ...

  • Opencv-Python学习笔记七——图像直方图 calcHi

    图像直方图 tutorial_py_histogram 直方图是对图像像素的统计分布,它统计了每个像素(0到L-1...

  • Core-L01-基本图像操作

    目标 获得像素值并修改; 获得图像的属性; 设置兴趣区(ROI); 分割合并图像。 获取并修改像素值 获取图像的属...

  • 数字图像的基本运算

    直方图 直方图简单来说就是图像中每个像素值的个数统计,比如说一副灰度图中像素值为 0 的有多少个,1 的多少个……...

  • equalizeHist(直方图均衡化,提升对比度)

    概念 直方图是图像中像素强度分布的图形表达方式,它统计了每一个强度值所具有的像素个数,而直方图均衡化就是拉伸像素的...

  • 第二章 图像的点运算

    图像的点运算主要用于改变一副图像的灰度分布范围。操作对象是单个像素值,输出像素值只与输入像素值有关。 灰度直方图 ...

  • 023-Opencv笔记-直方图均衡化

    什么是直方图 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称...

网友评论

      本文标题:010 图像像素值统计

      本文链接:https://www.haomeiwen.com/subject/fixcrctx.html