MATLAB中基于对数的图像非线性灰度变换

close all;                                  % 关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clear all;
clc
R = imread('peppers.png');                    % 读入图像,赋值给R
G = rgb2gray(R);                              % 转成灰度图像
J = double(G);                                % 数据类型转换成双精度
H = (log(J + 1)) / 10;                             % 进行基于常用对数的非线性灰度变换
set(0, 'defaultFigurePosition', [100, 100, 1000, 500]);% 修改图形图像位置的默认设置
set(0, 'defaultFigureColor', [1, 1, 1]);% 修改图形背景颜色的设置
subplot(121), imshow(G);% 显示原始灰度图像
subplot(122), imshow(H, []);% 显示变换后的图像

解释:

  • close all;:关闭所有打开的图形窗口。

  • clear all;:清空工作空间中的所有变量。

  • clc;:清除命令窗口中的所有文本。

  • R = imread('peppers.png');:读取名为peppers.png的图像,并赋值给R

  • G = rgb2gray(R);:将彩色图像R转换为灰度图像G

  • J = double(G);:将灰度图像G的数据类型转换为双精度浮点数,因为对数运算需要非负实数。

  • H = (log(J + 1)) / 10;:对灰度图像J进行基于常用对数的非线性灰度变换。log(J + 1)将对数运算应用于每个像素值加1后的结果,然后除以10以缩放结果。

  • set(0, 'defaultFigurePosition', [100, 100, 1000, 500]);:设置图形窗口的位置和大小。

  • set(0, 'defaultFigureColor', [1, 1, 1]);:设置图形窗口的背景颜色为白色。

  • subplot(121), imshow(G);:在第一个子图(1,2,1)中显示原始灰度图像G

  • subplot(122), imshow(H, []);:在第二个子图(1,2,2)中显示变换后的图像H[]表示不使用默认的颜色映射表,因为H已经是双精度浮点数,需要自定义颜色映射表或者不使用颜色映射表。

拓展:

  1. 自定义颜色映射表:可以自定义颜色映射表,以便更好地展示变换后的图像。
% 自定义颜色映射表
colormap(jet(256)); % 使用jet颜色映射表
  1. 应用非线性变换函数:可以使用MATLAB内置的非线性变换函数,如histeq进行直方图均衡化。
% 应用直方图均衡化
H_eq = histeq(J);
imshow(H_eq);
  1. 保存变换后的图像:可以将变换后的图像保存为文件。
% 保存变换后的图像
imwrite(H, 'log_transformed_peppers.png');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯弗的撒旦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值