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');

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

第二种:归一化至[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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值