IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 数字图像处理之直方图均衡化 -> 正文阅读

[人工智能]数字图像处理之直方图均衡化

目录

前言

目标

实验

实验结果


前言

图像的灰度直方图就描述了图像中灰度分布情况, 能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数, 描述的是图像中具有该灰度级的像素的个数

直方图的性质:

1) 直方图反映了图像中的灰度分布规律。 它描述每个灰度级具有的像素个数, 但不包含这些像素在图像中的位置信息。 图像直方图不关心像素所处的空间位置, 因此不受图像旋转和平移变化的影响, 可以作为图像的特征。

2) 任何一幅特定的图像都有唯一的直方图与之对应, 但不同的图像可以有相同的直方图。

3)如果一幅图像有两个不相连的区域组成, 并且每个区域的直方图已知, 则整幅图像的直方图是该两个区域的直方图之和。
?

直方图均衡化(Histogram Equalization)是一种增强图像对比度(Image Contrast)的方法,其主要思想是将一副图像的直方图分布通过累积分布函数变成近似均匀分布,从而增强图像的对比度。为了将原图像的亮度范围进行扩展, 需要一个映射函数, 将原图像的像素值均衡映射到新直方图中, 这个映射函数有两个条件:

①不能打乱原有的像素值大小顺序, 映射后亮、 暗的大小关系不能改变;

② 映射后必须在原有的范围内,即像素映射函数的值域应在0和255之间;

综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。
?

目标

本实验主要实现对输入低对比度的图片的灰度直方图的均衡化,由此提高图片的对比度。主要实现三个目标:

1)编写函数,,计算输入灰度图片的与那是直方图

2)编写函数,实现直方图均衡的目标

3)程序可以接受任意的灰度图片作为输入

实验

主函数:实现上述所有目标

clc;clear;
%% Write a computer program for computing the histogram of an image.
fig1 = imread('data/Fig1.jpg');
fig2 = imread('data/Fig2.jpg');
figure('Name', 'Original Histogram');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
[L1 D1] = myImhist(fig1);
title('Fig 1');
subplot(1, 2, 2);
[L2 D2] = myImhist(fig2);
title('Fig 2');

%% Implement the histogram equalization technique.
figure('Name', 'Transformation of Fig. 1');
set(gcf, 'position', [0 0 960 512]);
subplot(1, 2, 1);
imshow(fig1, []);
R1 = myEqualization(L1, D1);
for i = 1:size(fig1, 1)
    for j = 1:size(fig1, 2)
        fig1(i, j) = R1(fig1(i, j) + 1);
    end
end
subplot(1, 2, 2);
imshow(fig1, []);

figure('Name', 'Transformation of Fig. 2');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
imshow(fig2, []);
R2 = myEqualization(L2, D2);
for i = 1:size(fig2, 1)
    for j = 1:size(fig2, 2)
        fig2(i, j) = R2(fig2(i, j) + 1);
    end
end
subplot(1, 2, 2);
imshow(fig2, []);

figure('Name', 'Transformation Function');
subplot(1, 2, 1);
plot(R1);
subplot(1, 2, 2);
plot(R2);

figure('Name', 'Equalized Histogram');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
[L1 D1] = myImhist(fig1);
%title('Fig 1');
subplot(1, 2, 2);
[L2 D2] = myImhist(fig2);
%title('Fig 2');

子函数1:实现直方图计算和可视化

clc;clear;
%% Write a computer program for computing the histogram of an image.
fig1 = imread('data/Fig1.jpg');
fig2 = imread('data/Fig2.jpg');
figure('Name', 'Original Histogram');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
[L1 D1] = myImhist(fig1);
title('Fig 1');
subplot(1, 2, 2);
[L2 D2] = myImhist(fig2);
title('Fig 2');

%% Implement the histogram equalization technique.
figure('Name', 'Transformation of Fig. 1');
set(gcf, 'position', [0 0 960 512]);
subplot(1, 2, 1);
imshow(fig1, []);
R1 = myEqualization(L1, D1);
for i = 1:size(fig1, 1)
    for j = 1:size(fig1, 2)
        fig1(i, j) = R1(fig1(i, j) + 1);
    end
end
subplot(1, 2, 2);
imshow(fig1, []);

figure('Name', 'Transformation of Fig. 2');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
imshow(fig2, []);
R2 = myEqualization(L2, D2);
for i = 1:size(fig2, 1)
    for j = 1:size(fig2, 2)
        fig2(i, j) = R2(fig2(i, j) + 1);
    end
end
subplot(1, 2, 2);
imshow(fig2, []);

figure('Name', 'Transformation Function');
subplot(1, 2, 1);
plot(R1);
subplot(1, 2, 2);
plot(R2);

figure('Name', 'Equalized Histogram');
set(gcf, 'position', [0 0 1024 512]);
subplot(1, 2, 1);
[L1 D1] = myImhist(fig1);
%title('Fig 1');
subplot(1, 2, 2);
[L2 D2] = myImhist(fig2);
%title('Fig 2');

子函数2:实现直方图均衡化

function [ output_distribution ] = myEqualization( L, distribution )

%   It returns a mapping that equalizes the original distribution

    output_distribution = distribution;
    for i = 2:size(distribution);
        output_distribution(i) = output_distribution(i-1) + distribution(i);
    end
    output_distribution = output_distribution * (L - 1) / sum(distribution(:));


end

实验结果

原始直方图

测试图片直方图均衡前后

?测试图片直方图均衡前后

直方图均衡化对应灰度变换函数可视化

均衡化直方图可视化

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:15:05  更:2022-09-13 11:15:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:14:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码