空域图像增强-图像灰度变换

news2024/11/25 10:32:24

1.图像灰度变换。自选一张图片,完成以下图像处理:①显示图像的灰度直方图;②直方图均衡化,对比变化前后的图像和灰度直方图;③对图像进行线性灰度变换,对某部分灰度值进行扩展,压缩其它灰度值区域,对比变化前后的图像和灰度直方图。

图像增强:

·图像不清晰、不突出是由多种因素造成的, 如采集中未突出所需部分, 有干扰(噪声、散斑、运动模糊等等).

·目标是比原图像更适合于特定的应用, 便于识别和后继处理.

·不同的问题采用不同的方法, 评价结果好坏没有统一的标准.

改善降质图像的方法:

·图像增强: 不考虑降质原因, 关心有用信息, 抑制次要部分, 去干扰, 增强对比度, 不一定要逼近原图像.

·复原技术: 针对降质原因, 设法补偿降质因素, 尽可能逼近原始图像, 恢复原图.

图像增强和复原技术有重叠部分. 增强带有恢复性质, 突出有用信息, 且是局部性恢复.

图像灰度变换:

·按一定变换关系, 逐点改变原图像中每一个像素灰度值的方法.

·是图像增强处理技术中一种非常基础、直接的空间域图像处理方法.

·目的是为了改善画质, 使图像的显示效果更加清晰.

点运算:

·输入图像为f(x, y), 输出图像为g(x, y).

·点运算为g(x, y) = T[f(x, y)], 是一种像素的逐点运算. 

·描述了输入和输出值之间的转换关系.

·不改变空间位置关系.

·点运算又称为”对比度增强”、”对比度拉伸”、”灰度变换”.

根据g(x, y) = T[f(x, y)]可以将灰度变换分为线性变换和非线性变换.

灰度线性变换:

·输出灰度级与输入灰度级呈线性关系的点运算.

.

·如果a > 1, 输出图像的对比度增大.

·如果a < 1, 输出图像的对比度减小.

·如果a=1, b≠0, 使所有像素的灰度值上移或下移, 使整张图像更暗或更亮.

·如果a=1, b=0, 输出图像与输入图像相同.

·如果a < 0, 暗区域将变亮, 亮区域将变暗.

反转变换:

g(x, y) = 255 - f(x, y).

分段线性变换:

有时为了保持f(x, y)灰度低端和高端值不变, 用下式

灰度非线性变换:

·输出灰度级与输入灰度级呈非线性关系的点运算.

灰度对数变换:

·对原图像的动态范围进行压缩.

.

灰度指数运算:

灰度直方图: 表示图像中具有某种灰度级的像素的个数, 它反映了图像中每种灰度出现的频率. 灰度直方图是图像最基本的统计特征.

·横坐标: 灰度级.

·纵坐标: 该灰度级出现的个数.

直方图效果图:

·四种基本图像类型, 暗、亮、低对比度和高对比度以及它们对应的直方图.

·从图像灰度级的分布可以看出一幅图像的灰度分布特性: a) 较暗; b) 偏亮.

直方图的性质:

  1. 只反映该图像中不同灰度值出现的次数(或频数), 而未反映某一灰度值像素所在位置. 丢失了位置信息.
  2. 图像与直方图之间是多对一的映射关系.
  3. 由于直方图是对具有相同灰度值的像素统计得到的, 因此一幅图像各子区的直方图之和等于该图像全图的直方图.

直方图计算:

在离散形式下, 用代表离散灰度级, 为图像中出现级灰度的像素数, 是图像像素总数, 级灰度的像素的频数.

 

直方图均衡化:

    经变换后得到的新直方图不是很平坦, 但比原始图像的直方图平坦的多, 扩展了动态范围. 对于对比度较弱的图像进行处理十分有效.

变换后的灰度级减少, 这种现象叫做”简并”现象. 由于简并现象的存在, 处理后的灰度级总是要减少的.

以一个经典的例子掌握直方图均衡化的计算过程.

灰度级

0

1

2

3

4

5

6

7

像素数

790

1023

850

656

329

245

122

81

概率

0.19

0.25

0.21

0.16

0.08

0.06

0.03

0.02

依次求和

0.19

0.44

0.65

0.81

0.89

0.95

0.98

1.00

乘灰度级

1.33

3.08

4.55

5.67

6.23

6.65

6.86

7.00

取整

1

3

5

6

6

7

7

7

[注] 取整之后的值就是映射之后的坐标.

下面写出映射后的直方图.

灰度级

0

1

2

3

4

5

6

7

均衡化

0.19

0.25

0.21

0.24

0.11

1.1 显示图像的灰度直方图 

%gray histogram
I = imread('Durant.png');
%显示原图
subplot(1, 3, 1);
imshow(I);
title('原始图像');
%
subplot(1, 3, 2);
y = rgb2gray(I);
imshow(y);
title('灰度图');
%
subplot(1, 3, 3);
imhist(y);
title('gray histogram');

 1.2 直方图均衡化 

%histogram equalization
I = imread('Durant.png');
%进行灰度变换
I_gray = rgb2gray(I);
%对图像I_gray进行直方图均衡化
%直方图均衡通过转换灰度图像亮度值或索引图像的颜色图值来增强图像对比度, 
%输出图像的灰度直方图近似与给定的直方图相匹配. 
%J = histeq(I, N): 
%将灰度图像I转化成具有N个离散灰度级的灰度图像J, N缺省值为64. 
J = histeq(I_gray, 64);
%显示I_gray
subplot(1, 4, 1);
imshow(I_gray);
title('灰度图像');
%
subplot(1, 4, 2);
imshow(J);
title('均衡化后的灰度图像');
%
subplot(1, 4, 3);
%imhist是MATLAB图像处理模块中的一个函数, 
%用于提取图像中的直方图信息. 
imhist(I_gray);
title('灰度图像的直方图');
%
subplot(1, 4, 4);
imhist(J);
title('均衡化后的直方图'); 

(N=64)

(N=128)

 (N=2)

1.3 线性灰度变换与分段线性灰度变换 

1.3.1 线性灰度变换 

线性灰度变换: 
%linear gray-scale transformation
%
I = imread('Durant.png');
%
I_gray = rgb2gray(I);
%
I_gray2 = I_gray - 50;
I_gray3 = I_gray + 50;
I_gray4 = I_gray * 0.5;
I_gray5 = I_gray * 2.0;
% 
subplot(1, 11, 1);
imshow(I);
title('原图');
%
subplot(1, 11, 2);
imshow(I_gray);
title('原图的灰度图');
%
subplot(1, 11, 3);
imhist(I_gray);
title('原图的灰度直方图');
%
subplot(1, 11, 4);
imshow(I_gray2);
title('Igray2 = Igray - 50');
%
subplot(1, 11, 5);
imhist(I_gray2);
%
subplot(1, 11 ,6);
imshow(I_gray3);
title('Igray3 = Igray + 50');
%
subplot(1, 11, 7);
imhist(I_gray3);
%
subplot(1, 11, 8);
imshow(I_gray4);
title('Igray4 = Igray * 0.5');
%
subplot(1, 11, 9);
imhist(I_gray4);
%
subplot(1, 11, 10);
imshow(I_gray5);
title('Igray5 = Igray * 2.0');
%
subplot(1, 11, 11);
imhist(I_gray5);

 1.3.2 分段线性灰度变换 

%对图像进行分段线性变换 
%用底层算法实现 
image = imread('Durant.png');
%rgb2gray是MATLAB内部一种处理图像的函数. 
%通过消除图像色调和饱和度信息, 同时保留亮度, 
%实现将RGB图像或彩色图像转换为灰度图像. 
%即灰度化处理. 
image_gray = rgb2gray(image);
%image(:,:,1): 获取三维矩阵image中第一维、第二维的全部元素 
image_matrix = image_gray(:,:,1);
%将image_matrix数组中的元素类型转换为double类型
%image_matrix = double(image_matrix);
%size(image): 
%将三维矩阵image的行数给height, 
%将.............的列数给width, 
%将...........的通道数给channels. 
[height, width, channels] = size(image_gray);
%创建一个height×width的零矩阵
G = zeros(height, width);
%标定坐标点
x1 = 40; 
x2 = 130;
y1 = 50;  
y2 = 190;
%创建一个1×255的零向量
%灰度映射表, 灰度在0到255之间
%注: f(0) = 0
gray_map = zeros(1, 255);
%计算灰度映射表 
%当x < x1时, 灰度变换函数为
%f(x) = y1 / x1 * x
for i = 1 : x1 - 1 %i从1到x1-1, 步长默认为1
    gray_map(i) = y1 * i / x1;
end
%当x1 ≤ x ≤ x2时, 灰度变换函数为
%f(x) = (y2 - y1)*(x - x1) / (x2 - x1) + y1
for i = x1 : x2 %i从x1到x2, 步长默认为1
    gray_map(i) = (y2 - y1) * (i - x1) / (x2 - x1) + y1;
end
%当x > x2时, 灰度变换函数为 
%f(x) = (255 - y2)*(x - x2) / (255 - x2) + y2
for i = x2 + 1 : 255 %i从x2+1到255
    gray_map(i) = (255 - y2) * (i - x2) / (255 - x2) + y2;
end
%
for i = 1 : height
    for j = 1 : width
        %遍历image_matrix矩阵的每一个元素
        T = image_matrix(i, j); %分析图片矩阵中坐标为(i, j)的元素
        if(T == 0)
           G(i, j) = 0; 
        else
           G(i, j) = gray_map(T); %根据映射关系, 将映射后的值放入G矩阵中坐标(i ,j)的位置
        end
    end
end
%将G矩阵中的元素类型转换为uint8(0~255)
image_out = uint8(G);
%显示原图的灰度图像
subplot(1, 4, 1);
imshow(image_gray);
title('原图的灰度图像');
%显示原图(灰度图像)的直方图
subplot(1, 4, 2);
imhist(image_gray);
title('原图灰度图像的直方图');
%显示处理后的图像
subplot(1, 4, 3);
imshow(image_out);
title('处理后的图像');
%显示处理后(灰度图像)的直方图
subplot(1, 4, 4);
imhist(image_out);
title('处理后的灰度直方图');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车空调器前缸盖数控加工工艺的制订及夹具设计

目  录 摘  要 &#xff11; Abstract 2 1 引言 3 2 零件的分析 4 2.1 零件的作用 4 2.1.1空调压缩机的功用和要求 4 2.1.2 汽车空调压缩机的一般结构 4 2.1.3 斜盘式压缩机的结构特点 4 2.1.4 斜盘式压缩机的优点 5 2.2 零件的工艺分析 5 3 数控机床的加工性能分析 10 3.1…

[附源码]计算机毕业设计JAVA校园跑腿系统

[附源码]计算机毕业设计JAVA校园跑腿系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

2023年软考备考,系统分析师知识点速记,速看

2023上半年软考系统分析师知识点速记分享给大家&#xff0c;快来一起打卡学习吧&#xff01; 1、企业集成分类&#xff1a;按组织范围分 2、企业集成分类&#xff1a;按集成点分 3、企业战略与信息化战略集成方法 业务与IT整合&#xff08;BITA&#xff09;&#xff1a;重心是…

计算机组成原理习题课第三章-4(唐朔飞)

计算机组成原理习题课第三章-4&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

计算机网络——OSI参考模型

计算机网络的分层结构 OSI参考模型 世界上第一个提出网络结构的公司IBM公司&#xff0c;其他的公司有美国国防部提出的TCP/IP 为了支持不同的网络结构的互联互通&#xff0c;国际标准化组织于1984年提出的开放的系统互联&#xff08;OSI&#xff09;参考模型。 OSI参考模型在…

光栅莫尔信号四倍频细分电路模块的设计与仿真研究

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Kafka是什么?

简介&#xff1a; Kafka 是⼀种高吞吐量、分布式、基于发布/订阅的消息系统&#xff0c;最初由 LinkedIn公司开发&#xff0c;使⽤Scala语⾔编写&#xff0c;⽬前是 Apache 的开源项⽬。broker&#xff1a;Kafka 服务器&#xff0c;负责消息存储和转发topic&#xff1a;消息类别…

地理知识:墨卡托坐标系

1 介绍 等角圆柱形地图投影法 假设地球被围在一个中空的圆柱里&#xff0c;其赤道与圆柱相接触&#xff0c;然后再假想地球中心有一盏灯&#xff0c;把球面上的图形投影到圆柱体上&#xff0c;再把圆柱体展开&#xff0c;这就是一幅标准纬线为零度&#xff08;即赤道&#xff…

论文阅读-----使用可分离脚印的x射线3D CT向前和向后投影

Long Y , Fessler J A , Balter J M . 3D Forward and Back-Projection for X-Ray CT Using Separable Footprints[J]. IEEE Transactions on Medical Imaging, 2010, 29(11):1839-1850. 摘要 在x射线计算机断层扫描(CT)中&#xff0c;迭代重建三维图像的方法比传统的滤波反投影…

汇编语言——王爽版 总结

汇编语言-王爽summary《考试复习版》 摆烂一学期&#xff0c;期末抱佛脚 只针对必要内容总结&#xff0c;并非按目录总结 文章目录汇编语言-王爽summary《考试复习版》只针对必要内容总结&#xff0c;并非按目录总结前言一、基础知识汇编语言的组成存储器指令和数据存储单元CPU…

H2N-Gly-Gly-βAla-COOH, 42538-53-4

用作多肽和蛋白质亚硝化的低分子模型化合物。cas编号(净):627-74-7。 编号: 200129中文名称: 三肽Gly-Gly-βAlaCAS号: 42538-53-4单字母: H2N-GG-βA-OH三字母: H2N-Gly-Gly-βAla-COOH氨基酸个数: 3分子式: C7H13N3O4平均分子量: 203.2精确分子量: 203.09等电点(PI): 6.11pH7…

图解LeetCode——1779. 找到最近的有相同 X 或 Y 坐标的点(难度:简单)

一、题目 给你两个整数 x 和 y &#xff0c;表示你在一个笛卡尔坐标系下的 (x, y) 处。同时&#xff0c;在同一个坐标系下给你一个数组 points &#xff0c;其中 points[i] [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y 坐标时&…

带你学习不一样的数据仓库系列-框架概念

编者按&#xff1a;本系列文章参考总结自IBM,FaceBook&#xff0c;Google等数据仓库构建英文文章&#xff0c;部分章节为直译过来&#xff0c;部分内容加上乐哥6年陌陌&#xff0c;快手等工作经验总结而来&#xff0c;让大家了解真实国外大厂数仓构建之路&#xff0c;国外同行对…

【自然语言处理概述】文本词频分析

【自然语言处理概述】文本词频分析 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项目总负责人&#xff0c;全国高等学校计算机教学与产业实践资源建设专家…

python-百度API文字识别

最近公司通过网络查询到我们部门有人工作时间逛b站次数太多&#xff0c;这事惊动了上层领导&#xff0c;搅得人心惶惶。突然星期某信服的一套监控员工电脑的系统&#xff0c;不经一颤。想着自己也尝试玩玩电脑屏幕文字识别-----抓取关键字&#xff0c;然后将图片保存下来。 这…

Cocos 帮助更多优秀移动游戏登上 Web 舞台

作者 / Cocos 3D 内容开发引擎对于一款游戏开发引擎来说&#xff0c;关注市场风向&#xff0c;第一时间将合适的技术带给开发者永远是最重要的工作之一。作为一款国际化的 3D 引擎&#xff0c;Cocos 在全球拥有 160 万开发者&#xff0c;覆盖全球设备超 16 亿&#xff0c;曾被用…

STC 51单片机47——外部中断控制流水灯

#include <reg52.h> #include <intrins.h> //仿真与开发板一致&#xff0c;无需修改 sbit INT_0 P3^2; //开发板上&#xff0c;黑色按钮帽的按钮中的一个 unsigned char light0xfe; void delay500ms(void) //约500ms延时子程序&#xff08;12MHZ&a…

【Flink】使用CoProcessFunction完成实时对账、基于时间的双流join

文章目录零 处理函数回顾一 CoProcessFunction的使用1 CoProcessFunction使用2 实时对账&#xff08;1&#xff09;使用离线数据源&#xff08;批处理&#xff09;&#xff08;2&#xff09;使用高自定义数据源&#xff08;流处理&#xff09;二 基于时间的双流 Join1 基于间隔…

【自然语言处理(NLP)】基于预训练模型的机器阅读理解

【自然语言处理&#xff08;NLP&#xff09;】基于预训练模型的机器阅读理解 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项目总负责人&#xff0c;全国高…

【Pandas数据处理100例】(九十二):Pandas中的transform()函数使用方法

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…