有时候我们需要对一张灰度范围小的 图像进行灰度归一化至[0,1]或[0,255]。

关于代码中 min(min(img))和max(max(img))的解释:
关于代码中 归一化的数学原理见博客:

===========================================================
测试结果:
原图:

第一种方法:

第二种方法:

第三种方法:

============================================================

对灰度归一化的方法主要有三种

第一种:归一化至[0,255],编写算法实现

代码:

%% 读取原图像
oriImage = imread('luoxuan.jpg');
grayImage = rgb2gray(oriImage);
figure;
subplot(121);
imshow(grayImage);
title('grayImage');%% 计算灰度
originalMinValue = double(min(min(grayImage)));
originalMaxValue = double(max(max(grayImage)));
originalRange = originalMaxValue-originalMinValue;%% 归一化为[0 255]
desiredMin = 0;    %想要的最小灰度
desiredMax = 255;  %想要的最大灰度
desiredRange=desiredMax-desiredMin;
dblImageS255=desiredRange*(double(grayImage)-originalMinValue)/originalRange+desiredMin;
subplot(122);
imshow(uint8(dblImageS255));
imwrite(uint8(dblImageS255),'25_2.jpg')
title('dblImageS255');

运行结果为:

第二种:归一化至[0,1],编写算法实现

代码:

%% 读取原图像
oriImage = imread('luoxuan.jpg');
grayImage = rgb2gray(oriImage);
figure;
subplot(121);
imshow(grayImage);
title('grayImage');%% 计算灰度
originalMinValue = double(min(min(grayImage)));
originalMaxValue = double(max(max(grayImage)));
originalRange = originalMaxValue-originalMinValue;%% 归一化为[0 1]
desiredMin = 0;     %想要的最小灰度
desiredMax = 1;     %想要的最大灰度
desiredRange=desiredMax-desiredMin;
dblImageS1=desiredRange*(double(grayImage)-originalMinValue)/originalRange+desiredMin;
% figure;
subplot(122);
imshow(dblImageS1);
imwrite(uint8(dblImageS255),'25_2.jpg')
title('dblImageS-01');

运行结果为:

第三种:调用matlab函数实现

代码:

%% 读取原图像
oriImage = imread('luoxuan.jpg');
grayImage = rgb2gray(oriImage);
figure;
subplot(121);
imshow(grayImage);
title('grayImage');%% 计算灰度
originalMinValue = double(min(min(grayImage)));
originalMaxValue = double(max(max(grayImage)));
originalRange = originalMaxValue-originalMinValue;%% 调用matlab的函数实现归一化
img3 = mat2gray(oriImage);
subplot(122);
imshow(img3);
imwrite(img3 ,'25_2.jpg')
title('dblImageS-matlab');

运行结果为:

最终代码:

%% 读取原图像
oriImage = imread('luoxuan.jpg');
grayImage = rgb2gray(oriImage);
figure;
imshow(grayImage);
title('grayImage');%% 计算灰度
originalMinValue = double(min(min(grayImage)));
originalMaxValue = double(max(max(grayImage)));
originalRange = originalMaxValue-originalMinValue;%% 归一化为[0 255]
desiredMin = 0;    %想要的最小灰度
desiredMax = 255;  %想要的最大灰度
desiredRange=desiredMax-desiredMin;
dblImageS255=desiredRange*(double(grayImage)-originalMinValue)/originalRange+desiredMin;
figure;
imshow(uint8(dblImageS255));
imwrite(uint8(dblImageS255),'25_2.jpg')
title('dblImageS255');%% 归一化为[0 1]
desiredMin = 0;     %想要的最小灰度
desiredMax = 1;     %想要的最大灰度
desiredRange=desiredMax-desiredMin;
dblImageS1=desiredRange*(double(grayImage)-originalMinValue)/originalRange+desiredMin;
figure;imshow(dblImageS1);
imwrite(uint8(dblImageS255),'25_2.jpg')
title('dblImageS-01');%% 调用matlab的函数实现归一化
img3 = mat2gray(oriImage);
figure;
imshow(img3);
imwrite(img3 ,'25_2.jpg')
title('dblImageS-matlab');```

参考文献

[1] https://blog.csdn.net/discoverer100/article/details/61426650
========END

Matlab 的多种灰度归一化方法代码演示(可以直接运行)相关推荐

  1. STC89C52单片机可调速电机及呼吸灯(PWM)代码演示

    目录 直流电机介绍 电机的驱动电路 PWM介绍 PWM重要参数 PWM的产生方法 代码演示 1,调速电机 2,呼吸灯 直流电机介绍 直流电机是一种将电能转换为机械能的装置.一般的直流电机有两个电极,当 ...

  2. matlab归一化方法,数据归一化的基本方法

    1.线性归一化 简单公式表达:y = (x-min Value)/(max Value-min Value) 其中,x是归一化之前的数据,y是归一化之后的数据,max Value 和 min Valu ...

  3. matlab灰度归一化,[转载]matlab图像处理为什么要归一化和如何归一化?

    matlab图像处理为什么要归一化和如何归一化?一.为什么归一化 1. 基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响.也就是转换成唯一的标准形式以抵抗仿射变换 ...

  4. 数据挖掘之3种数据归一化方法及代码实现

    学习数据挖掘.机器学习的同学们应该经常碰到数据归一化(也称标准化),数据的不同特征种类(评价指标)的取值范围差别可能很大,如果不做处理会影响数据分析的结果.因此需要把数据进行标准化处理,将数据进行比例 ...

  5. Matlab三种归一化方法

    归一化的具体作用是归纳统一样本的统计分布性.归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布.归一化有同一.统一和合一的意思.无论是为了建模还是为了计算,首先基本度量单位要 ...

  6. matlab归一程序,Matlab三种归一化方法

    归一化的具体作用是归纳统一样本的统计分布性.归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布.归一化有同一.统一和合一的意思.无论是为了建模还是为了计算,首先基本度量单位要 ...

  7. 怎样在matlab中查找函数的具体代码,几种查看Matlab函数源代码的方法

    查看源码是学习写代码的一种好方法,这里介绍几种查看Matlab软件自带函数的方法: 1.type函数 在命令窗口输入"type+函数名",则命令窗口会显示函数的源代码,例如type ...

  8. Jupyter 工具的安装与使用方法,jupyter运行python代码演示,好用的python编辑器推荐!

    Jupyter 工具的安装与使用 第一章:环境搭建 ① Jupyter 工具的安装 ② Jupyter 服务的启动 ③ Python 代码运行演示 第二章:详细过程展示 ① Jupyter 详细安装过 ...

  9. 分酒问题matlab代码,matlab葡萄酒分类数据归一化问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab葡萄酒分类数据归一化问题% 选定训练集和测试集 % 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集 train_wi ...

最新文章

  1. Jenkins构建Docker容器
  2. 消息队列NetMQ 原理分析2-IO线程和完成端口
  3. java中write方法报错_Java中管道报错:Write end dead
  4. python 强制结束线程_在python中实现强制关闭线程的示例
  5. tensorrt基础知识+torch版lenet转c++ trt
  6. 谷歌浏览器的 vue插件工具
  7. 每天学点SpringCloud(八):使用Apollo做配置中心
  8. 移动浏览器相关总结(持续更新)
  9. C#把Xml转换为DataSet的两种方法
  10. 动手设计 CPU(三)—— 微程序控制的存储器读写系统设计
  11. python调用java完整教程
  12. 智能数码行业进销存软件排行榜前十名,看这篇就够了
  13. linux_oracle视频讲解百度云,Oracle免费视频课程2012版
  14. [TLSR8266] 1、搭建tlsr8266编译框架在win服务器中
  15. 电量分析 —— 优化耗电
  16. 投稿Springer旗下某中科院1区TOP期刊时间记载
  17. Session的活化与钝化
  18. 华为用linux系统装eclipse,centos装eclipse
  19. 科技是国之利器,人工智能与机器人发展势不可当
  20. JAVA12_12学习总结(JavaScript)

热门文章

  1. The return type of function ‘Custom Source‘ could not be determined automatically, due to type erasu
  2. python字节流转化为字符串报错_python3.x,_关于Python3字符串转换为字节流的问题,python3.x - phpStudy...
  3. MATLAB--读取2.11版本卫星观测值文件
  4. 正运动技术荣膺“CMCD 2020年度运动控制领域最具成长品牌”等三项大奖
  5. java 压缩oop_JVM优化之压缩普通对象指针(CompressedOops)
  6. 大学生为何后悔上大学
  7. Java小农养成记第十三天
  8. 基于Java毕业设计新城街道社区的健康档案管理平台源码+系统+mysql+lw文档+部署软件
  9. X86机器安装麒麟UOS双系统
  10. 科研必备的9款科研神器