zoukankan      html  css  js  c++  java
  • 直方图histeq

    histeq的原理:

    [MN]=size(H);

    [counts,x]=imhist(H);%H是读取的图像,imhist是对图像直方图进行统计,其中count,是每个灰度值得个数,x代表灰度值。一般的,x=1:256

    location=find(counts~=0);%找到所有像素个数不为0的灰度级

    MinCDF=min(counts(location));%找到包含个数最少的灰度级

    for  j=1:length(location)

          CDF=sum(counts(location(1:j)));%计算各个灰度级像素个数累计分布

          P=find(H==x(location(j)));%找到图像中等于某个灰度级所有像素点所在位置

          H(P)=(CDF-MinCDF)/(M*N-MinCDF);%%利用灰度换算公式,修改所有位置上的像素值

    end

    举例:

    clc;
    H=imread('03.tif');figure;subplot(121);imshow(H);%图像应该是灰度图,若图像为彩色图,需要对每个通道进行计算
    H=im2double(H);%这个是需要注意的地方,一定要变换成double类型
    [M N]=size(H);
    [counts,x]=imhist(H);%H是读取的图像,imhist是对图像直方图进行统计,其中count,是每个灰度值得个数,x代表灰度值。一般的,x=1:256
    location=find(counts~=0);%找到所有像素个数不为0的灰度级
    MinCDF=min(counts(location));%找到包含个数最少的灰度级

    for j=1:length(location)

    CDF=sum(counts(location(1:j)));%计算各个灰度级像素个数累计分布
    P=find(H==x(location(j)));%找到图像中等于某个灰度级所有像素点所在位置
    H(P)=(CDF-MinCDF)/(M*N-MinCDF);%%利用灰度换算公式,修改所有位置上的像素值
    end

    subplot(122);imshow(H)

    如果是直接调用函数;

    H=imread('03.tif');figure;
    imshow(H);title(' 原始图像 '); %
    figure;
    imhist(H);
    title(' 原始直方图 ');
    B=histeq(H);
    figure;imshow(B);title(' 均衡图像 ');
    figure;
    imhist(B);
    title(' 均衡化直方图 ');

  • 相关阅读:
    JS实现菜单滚动到一定高度后固定
    原生js如何获取某一元素的高度
    在Vue项目中,添加的背景图片在服务器上不显示,如何处理
    单行文本截断 text-overflow
    使用line-height垂直居中在安卓手机上效果不好
    css 苹方字体
    十二. for of 示例 (可以解决大多数应用场景)
    npm详解
    webpack搭建服务器,随时修改刷新
    探讨弹性布局Flexible Box
  • 原文地址:https://www.cnblogs.com/fcfc940503/p/11195836.html
Copyright © 2011-2022 走看看