当前位置:   article > 正文

Matlab 的多种灰度归一化方法代码演示(可以直接运行)_matlab归一化处理代码

matlab归一化处理代码

有时候我们需要对一张灰度范围小的 图像进行灰度归一化至[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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

运行结果为:
在这里插入图片描述

第二种:归一化至[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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

运行结果为:
在这里插入图片描述

第三种:调用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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行结果为:
在这里插入图片描述

最终代码:

%% 读取原图像
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

参考文献

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/90059
推荐阅读
相关标签
  

闽ICP备14008679号