matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize直方图规定化直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:令Pr(r)和Pz(z)分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

直方图规定化

直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:

令Pr(r)和Pz(z)分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直方图均衡化处理,应有:

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize

由于都是进行均衡化处理,处理后的原图像概率密度函数Ps(S)及理想图像概率密度函数PV(V)是相等的。

于是,我们可以用变换后的原始图像灰度级S代替(2)式中的V。

即:Z = G – 1(S) 

这时的灰度级Z 便是所希望的图像的灰度级。

此外,利用(1)与(3)式还可得到组合变换函数

                 Z = G – 1[T(r)]

对连续图像,重要的是给出逆变换解析式。对离散图像而言,有

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize


clear all;
close all;
clc;

I = imread('2-t.bmp');
L=256;            
NK=zeros(L,1);               %存储原图像直方图数据
Rk_CDF_Normal=zeros(L,1);    %存储直方图规定化后的图像的直方图
Rk_pre=zeros(L,1);           %存储原图像累积直方图数据
[row,col]=size(I);

%%
%获取像素灰度级
for i = 1:row
    for j = 1:col
        num = double(I(i,j))+1;
        NK(num) = NK(num)+1;
    end
end

%计算直方图概率估计
Ps = NK./numel(I);%存储原图像直方图概率数据
%计算累积直方图
for level=1:L
    if level==1
        Rk_pre(level)=Ps(level);
    else
        Rk_pre(level)=Rk_pre(level-1)+Ps(level);
    end
end

%%
%规定化直方图,在这里要得到2-s图像的灰度直方图
H = imread('2-s.jpg');
H = rgb2gray(H);
nk_normal = zeros(L,1);
Rk_normal = zeros(L,1);
[row,col] = size(H);

%获取像素灰度级
for i = 1:row
    for j = 1:col
        num_normal = double(I(i,j))+1;
        nk_normal(num_normal) = nk_normal(num_normal)+1;
    end
end

%计算直方图概率估计
Ps_normal = nk_normal./numel(H);
for level=1:L
    if level==1
        Rk_normal(level)=Ps_normal(level);
    else
        Rk_normal(level)=Rk_normal(level-1)+Ps_normal(level);
    end
end

%计算规定化累积直方图
for level=1:L
    if level==1
        Rk_CDF_Normal(level)=Rk_normal(level);
    else
        Rk_CDF_Normal(level)=Rk_CDF_Normal(level-1)+Rk_normal(level);
    end
end

%%
%计算原图像与目标图像累计直方图数值的差的绝对值
double ScMin=zeros(L,L);
for y=1:L
    for x=1:L
        ScMin(x,y)=abs(Rk_pre(y)'-Rk_CDF_Normal(x)');
    end
end
%建立映射
HisM=zeros(L:1);
for level_x=1:L
    min = 0;
    minV=ScMin(1,level_x);
    for level_y=1:L
        if(minV>ScMin(level_y,level_x))
            minV=ScMin(level_y,level_x);
            min = level_y;
        end
    end
    HisM(level_x)= min;
end

%将原图像的每个像素灰度转换为直方图均衡化后的灰度
[row,col]=size(I);
New=I;
for x = 1:row
    for y = 1:col
        Num = double(I(x,y))+1;
        if Num==L
            New(x,y)=HisM(L);
        end
    end
end
figure;imshow(New),title('规定化后图像');

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize

matlab直方图归一化_matlab归一化函数normalize

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180271.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java笔记二十四——Spring开发

    Java笔记二十四——Spring开发Spring是一个支持快速开发JavaEE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发JavaEE应用程序的必备。在SpringFramework(最核心的Spring框架)基础上,又诞生了SpringBoot、SpringCloud、SpringData、SpringSecurity等一系列基于SpringFramework的项目。SpringFrameworkIoC容器容器是一种为某种特定组件的运行提供必要支持的一个软件环

    2022年5月16日
    37
  • Step by Step WCF—Transactions

    Step by Step WCF—Transactions

    2021年7月26日
    81
  • BurpSuite系列(五)—-Intruder模块(暴力激活成功教程)「建议收藏」

    BurpSuite系列(五)—-Intruder模块(暴力激活成功教程)「建议收藏」一、简介BurpIntruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,BurpIntruder是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用BurpIntruder方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证

    2022年7月12日
    71
  • nginx前端跨域_nginx实现跨域

    nginx前端跨域_nginx实现跨域做前端开发的时候,使用nginx代理,如果我们当前的域名与请求接口的域名不在同一个域名下时,会有跨域问题打开nginx.conf文件打开Finder-前往-前往文件夹/usr/local/etc/nginx一般默认在这个目录下打开nginx.conf之后,增加一个location如下:location/test{prox…

    2025年6月3日
    3
  • 后端框架有哪些?8个流行的后端框架推荐

    后端框架有哪些?8个流行的后端框架推荐后端框架有哪些?8个流行的后端框架推荐后端框架在选择要使用的后端框架时,有许多选项可用。虽然每个后端框架都有自己的优点和缺点,但在做出最终决定之前,还有一些其他因素需要考虑。在本指南中,我们将仔细研究经过尝试的框架,以确定哪个是最适合您的后端框架。后端vs前端如果您是Web开发世界的新手,后端和前端开发之间的区别可能不那么明显,但是,了解两者之间的区别很重要。以下是前端开发人员与后端开发人员的一些区别。前端开发:前端开发人员在很大程度上负责用户所看到的内容(即网站页面),前端开发人员主要使用HTM

    2022年6月10日
    548
  • 更新pip版本的命令(更新pip命令)

    使用如下指令更新pip,可能会出错pipinstall–upgradepip使用如下指令即可完美更新pippython-mpipinstall–upgradepip

    2022年4月15日
    307

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号