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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【matlab图像处理】灰度/点变换实践(2) -> 正文阅读

[人工智能]【matlab图像处理】灰度/点变换实践(2)

中国史之【褒姒得宠】:
褒姒(baosi),西周君主周幽王第二任王后,太子伯服生母,幽王甚为宠爱,有“烽火戏诸侯”之说。前771年,申侯联合犬戎攻打周幽王,周幽王被杀于骊山之下,褒姒被犬戎掳走,从此下落不明,西周灭亡。
——来源:全历史APP

【路漫漫其修远兮,吾将上下而求索】

今天介绍图像的灰度变换实践,包括对数变换和分段线性变换。本内容参考自《实用MATLAB图像和视频处理》第8章。

1、对数变换

对数变换和反对数变换都是非线性变换,分别用于压缩或扩展一幅图像中像素值的动态范围。对数变换的数学描述如下:

其中,r是原始像素灰度,s是结果像素值,c是一个常数,控制范围。使用(1+r)是为了确保输入像素值大于1,log输出为正数。

书本中,举了一个对数的例子。使用对数函数来改善和显示傅里叶变换的结果。如下,左图是大米图像的傅里叶频谱(仅振幅),其矩阵范围是【0, 2.8591x10的四次方】,当将他显示在一个线性放缩的8比特系统上,仅看到中心的亮点而很难看到其他东西。

但使用对数变换将其动态范围压缩到【0,10.26】,再使用自动对比度变换将其压缩范围扩展到【0, 255】,效果如右上图所示。我们可以明显看到中心的垂直细线,共心圆等细节。这就是图像增强的意义所在。

我们用matlab来实践一下,代码如下:

%%本代码用于学习如何对图像进行对数变换操作

% 按照公式生成对数函数
x = 0:255;
c = 255 / log(256);
y = c * log(x+1);
figure, subplot(2,2,1), plot(y), title('对数变换函数'), axis tight, axis square
%I = imread('tiger.jpg');
I = imread('radio.tif');
I_log = uint8(y(I+1));
subplot(2,2,2), imshow(I), title('原图');
subplot(2,2,3), imshow(I_log), title('对数变换调整');
% 增强图像亮度
I_br = imadd(I, 100);
subplot(2,2,4), imshow(I_br), title('图像增强亮度');
效果如上图所示,我们可以看到,使用对数变换,可以显示出物体的细节,而仅使用亮度增强不能看到细节。因为对数变换是非线性的动态范围的调整,而图像增亮是线性提高像素点,原来看不到,提高像素仍然看不到,只是变亮了。

再测试一张图片看看效果:

2、分段线性变换

分段线性变换可以使用若干个线性方程来描述,每个用于输入图像中灰度值的一个区间。它的主要优点是它们可有任意的复杂度;而缺点是需要更多的用户输入。

下图为书中所给的例子,用来改善输入图像的对比度。

分段线性变换的一个常见应用时灰度切割,也就是让其中一个特定的亮度灰度值范围在输出图像中突出,而其他值保持不变。我们代码实践一下:

%%本代码用于学习如何对图像进行分段线性变换操作

% 按照公式生成对数函数
y(1:175) = 0:174;
y(176:200) = 255;
y(201:256) = 200:255;
figure, subplot(1,3,1), plot(y), title('分段线性变换函数'), axis tight, axis square

%I = imread('tiger.jpg');
I = imread('micro.tif');
subplot(1,3,2), imshow(I), title('原图');
I2 = uint8(y(I+1));
subplot(1,3,3), imshow(I2), title('分段线性变换调整');

从上图可以看出,调整后的图片在特定范围像素更亮,但仍然有其他干扰。我们试一次另一个分段函数。

%%本代码用于学习如何对图像进行分段线性变换操作

% 按照公式生成对数函数
y(1:175) = 0:174;
y(176:200) = 255;
y(201:256) = 200:255;
figure, subplot(1,3,1), plot(y), title('分段线性变换函数'), axis tight, axis square

%I = imread('tiger.jpg');
I = imread('micro.tif');
subplot(1,3,2), imshow(I), title('原图');
I2 = uint8(y(I+1));
subplot(1,3,3), imshow(I2), title('分段线性变换调整');

z(1:175) = 50;
z(176:200) = 250;
z(201:256) = 50;
I3 = uint8(z(I+1));
figure, subplot(1,2,1), plot(z), xlim([0 255]), ylim([0 255]), axis square;
subplot(1,2,2), imshow(I3)

这样效果就好很多了。

以上是本期内容,建议自己动手来实践一下。如果需要图片和代码,可以关注公众号,回复关键字【matlab代码】即可获得。我会上传到云盘。

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍图像处理的直方图处理。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我【CV之道】一起学习。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:05:07  更:2022-05-08 08:05:41 
 
开发: 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/26 7:47:09-

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