直方图处理--规定化

1.基础知识

定义:通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。

计算步骤:

1、先对原始的直方图均衡化:S = T(r)

2、对规定的直方图规定化:v=G(z)

3、令 S = v,则:z = G-1(v) = G-1[T(r)] 

例题:假设一幅图像具有如表1 所示概率分布,对其进行规定化。要求规定化后的图像具有如表2 所示的灰度级分布。

表一:

灰度级

0

1

2

3

4

5

6

7

各灰度级概率分布

0.10

0.20

0.30

0.10

0.15

0.05

0.05

0.05

表二:

灰度级

0

1

2

3

4

5

6

7

各灰度级概率分布

0.10

0.20

0.30

0.10

0.15

0.05

0.05

0.05

解题过程

2.代码实现

假设原始图像为'original_image.jpg',目标图像为'target_image.jpg'。首先,将原始图像和目标图像转换为灰度图像。然后,计算原始图像和目标图像的直方图,并对其进行归一化处理。接下来,计算原始图像和目标图像的累积分布函数。根据累积分布函数的差异来构建灰度级映射表。最后,使用映射表将原始图像的像素值替换为对应的目标图像的像素值,得到规定化结果图像。

% 读取原始图像和目标图像
originalImage = imread('original_image.jpg');
targetImage = imread('target_image.jpg');

% 将原始图像和目标图像转换为灰度图像
originalGray = rgb2gray(originalImage);
targetGray = rgb2gray(targetImage);

% 计算原始图像和目标图像的直方图
originalHist = imhist(originalGray);
targetHist = imhist(targetGray);

% 对直方图进行归一化处理
originalHist = originalHist / sum(originalHist);
targetHist = targetHist / sum(targetHist);

% 计算原始图像和目标图像的累积分布函数
originalCDF = cumsum(originalHist);
targetCDF = cumsum(targetHist);

% 构建灰度级映射表
mappingTable = zeros(256, 1, 'uint8');
for i = 1:256
    [~, index] = min(abs(originalCDF(i) - targetCDF));
    mappingTable(i) = index - 1; % 灰度级从0开始
end

% 应用灰度级映射表进行直方图规定化
resultImage = mappingTable(originalGray + 1);

% 显示原始图像、目标图像和规定化结果图像
subplot(1, 3, 1);
imshow(originalImage);
title('Original Image');

subplot(1, 3, 2);
imshow(targetImage);
title('Target Image');

subplot(1, 3, 3);
imshow(resultImage);
title('Result Image');

3.总结

直方图规定化是一种用于调整图像对比度和亮度的方法,通过将图像的像素值映射到目标直方图的过程来实现。

优点:

  1. 增强对比度:直方图规定化可以显著改善图像的对比度,使得图像中的细节更加突出。
  2. 调整亮度:通过匹配目标直方图,可以调整图像的亮度分布,使得图像更贴近期望的亮度效果。
  3. 保留图像特征:在规定化过程中,图像的整体特征和结构通常能够得到保留,只是对比度和亮度发生了调整。

缺点:

  1. 信息丢失:直方图规定化可能会导致原始图像中的一些细节和信息丢失,特别是在目标直方图与原始直方图差异较大的情况下。
  2. 过度增强:如果目标直方图的动态范围远大于原始图像的动态范围,规定化可能会导致一些像素值集中在极端位置,使得图像出现过度增强或失真。
  3. 对异常值敏感:直方图规定化对噪声和异常值比较敏感,可能会导致一些不希望的结果。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值