数字图像处理之二直方图规定化

2024-04-25 08:58

本文主要是介绍数字图像处理之二直方图规定化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

clear;
 close all;
 I=imread('D:/567.png');
 dif=zeros(256,256);%%变量的定义及其初始化
 dif=double(dif);
 H_SML=zeros(256);%单映射变量定义初始化
 H_GML=zeros(256);%组映射变量定义初始化
 src=zeros(256);%源图像像素分为256个等级
 dst=zeros(256);%处理后的图像像素等级256个


 for k=1:256
     src(k+1)=length(find(I==k));   %在这里计算每个分量bin的值    
 end
 src_pro=src/sum(src);%%进行归一化处理
 for i=2:256   
 src_pro(i)=src_pro(i-1)+src_pro(i);%%计算累计直方图
 end


 for i=1:256   
     dst(i)=i;   
 end
 dst_pro=dst/sum(dst);
 for i=2:256 
 dst_pro(i)=dst_pro(i-1)+dst_pro(i);%%这里已经计算出了规定后的累积直方图。
 end
 
 for j=1:256
     for i=1:256
        dif(i,j)=dst_pro(i)-src_pro(j);
        if dif(i,j)<0
            dif(i,j)=-dif(i,j);
        end
     end
 end
 
 %SML单映射
 for j=1:256
     minx=0;
     minvalue=dif(1,j);
     for i=2:256
         if minvalue>dif(i,j)
             minvalue=dif(i,j);
             minx=i;
         end
     end
         H_SML(j)=minx;
 end
 %SML规定化后直方图
 SH=zeros(256);
 SH=double(SH);
 for i=1:256
    SH(H_SML(i)+1)=SH(H_SML(i)+1)+src(i);
 end
%规定化后概率直方图
SHpro=SH/sum(SH);
subplot(2,3,2);
plot(SHpro);
axis([0,257,0,0.05]);
title('单映射后的概率直方图');
xlabel('灰度值');
ylabel('概率密度');




 %GML
 lastStartY=1;
 lastEndY=1;
 startY=1;
 endY=1;
 for i=1:256
     minvalue=dif(i,1);
     for j=2:256
         if minvalue>dif(i,j)
             minvalue=dif(i,j);
             endY=j;
         end
     end
     if (startY~= lastStartY) || (endY~=lastEndY)
         for k=startY:endY
             H_GML(k)=i;
         end
             lastStartY=startY;
             lastEndY=endY;
             startY=lastEndY+1;
     end
 end
 %GML组映射规定化后直方图
 GH=zeros(256);
 GH=double(GH);
 for i=1:256
    GH(H_GML(i)+1)=GH(H_GML(i)+1)+src(i);
 end
%规定化后概率直方图
GHpro=GH/sum(GH);
%gh=uint8(GH);


subplot(2,3,3);
plot(GHpro);
axis([0,257,0,0.05]);%这里是设置坐标轴的显示范围。


title('组映射后的概率直方图');
xlabel('灰度值');
ylabel('概率密度');
 S=zeros(256,256);
 S=uint8(S);%这里要转换为uint8类型的用于显示
 G=zeros(256,256);
 G=uint8(G);%这里也要对器进行转换转换为uint8类型的
 subplot(2,3,4);
 imshow(I);
 subplot(2,4,1);
 KK=rgb2gray(I);
 imhist(KK);
 title('源图像');
 for i=1:241
     for j=1:357
         S(i,j)=H_SML(I(i,j)+1);
     end
 end
 subplot(2,3,5);
 imshow(S);
 title('单映射后的图像');
 for i=1:241
     for j=1:357
         G(i,j)=H_GML(I(i,j)+1);
     end
 end
 subplot(2,3,6);
 imshow(G);
 title('组映射后的图像');
 figure(3) 
 plot(GH);
  title('组映射的直方图');
 xlabel('灰度值');
 ylabel('像素数');
  figure(4) 
 plot(SH,'Color',[0 0.03 1]);


  title('单映射的直方图');
 xlabel('灰度值');
 ylabel('像素数');

这篇关于数字图像处理之二直方图规定化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934234

相关文章

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P98

更改为 差分的数学表达式从泰勒级数展开式可得: 后悔没听廖老师的。 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

Pr 入门系列之二:导入与管理素材(下)

◆  ◆  ◆ 管理素材 导入素材后,项目面板中每一个媒体都只是原始素材的“链接”。 所以,视频编辑过程中一般情况下都不会破坏原始素材。 1、在不同视图模式下组织素材 项目面板提供了三大视图 View供选用:列表视图、图标视图以及自由格式视图。 A. 锁定 B. 列表视图 C. 图标视图 D. 自由格式视图 E. 缩放滑块 F. 排序图标 G. 自动匹配序列 H. 查找 I. 新建素材箱 J.

有无直方图,性能的差距

################################# ###有无直方图,性能的差距### ################################# 实验的环境在redhat平台下的11gr2单实例环境 1、在自己定义的用户下创建表及索引 CREATE TABLE customers AS SELECT * FROM sh.customers; CREATE INDEX cu

CUDA:用并行计算的方法对图像进行直方图均衡处理

(一)目的 将所学算法运用于图像处理中。 (二)内容 用并行计算的方法对图像进行直方图均衡处理。 要求: 利用直方图均衡算法处理lena_salt图像 版本1:CPU实现 版本2:GPU实现  实验步骤一 软件设计分析: 数据类型: 根据实验要求,本实验的数据类型为一个256*256*8的整型矩阵,其中元素的值为256*256个0-255的灰度值。 存储方式: 图像在内存中

图像处理:基于直方图矫正的图像色彩均衡

from itertools import chainimport cv2import osimport numpy as npimport datetimeclass BrightnessBalance:def __init__(self):passdef arrayToHist(self,gray):'''计算灰度直方图,并归一化:param gray_path::return:'''

使用YOLOv10训练自定义数据集之二(数据集准备)

0x00 前言 经过上一篇环境部署的介绍【传送门】,我们已经得到了一个基本可用的YOLOv10的运行环境,还需要我们再准备一些数据,用于模型训练。 0x01 准备数据集 1. 图像标注工具 数据集是训练模型基础素材。 对于小白来说,一般推荐从一些开放网站中下载直接使用,官方推荐了一个名为Roboflow的数据集网站。Roboflow是一个免费开源数据集管理平台,它不仅提供免费的数据集,还

Arcgis字段计算器:随机生成规定范围内的数字

选择字段计算器在显示的字段计算器对话框内,解析程序选择Python,勾选上显示代码块, 半部分输入: import random; 可修改下半部分输入: random.randrange(3, 28) 表示生成3-28之间的随机数 字段计算器设置点击确定完成随机数的生成,生成的随机数如下图所示。

python画图|并列直方图绘制

前述学习过程中,已经知晓普通直方图绘制和堆叠直方图绘制,参考链接如下: 西猫雷婶-CSDN博客 有时候,我们还会遇到并列直方图绘制的需求,今天就探索一下。 【1】官网教程 按照惯例,我们先来到官网: https://matplotlib.org/stable/gallery/lines_bars_and_markers/barchart.html#sphx-glr-gallery-lin