图像处理——图像灰度变换

点运算又称为对比度增强、对比度拉伸或灰度变换,是一种通过图像中的每一个像素值(即像素点上的灰度值)进行运算的图像处理方式。它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的灰度值决定,运算结果不会改变图像内像素点之间的空间关系,其运算的数学关系式:
公式
其中表示原图像,表示经过点运算处理后的图像,表示点运算的关系函数。按照灰度变换的数学关系点运算可以分为线性灰度变换、分段线性灰度变换和非线性灰度变换三种

线性灰度变换

close all;                            %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clear all;
clc;
gamma=0.5;                            %设定调整线性度取值
I=imread('peppers.png');			  %读入要处理的图像,并赋值给I

R=I;                                  %将图像数据赋值给R
R (:,:,2)=0;                          %将原图像变成单色图像,保留红色
R(:,:,3)=0;
R1=imadjust(R,[0.5 0.8],[0 1],gamma); %利用函数imadjust调整R的灰度,结果返回R1

G=I;								  %将图像数据赋值给G
G(:,:,1)=0;							  %将原图像变成单色图像,保留绿色
G(:,:,3)=0;
G1=imadjust(G,[0 0.3],[0 1],gamma);	  %利用函数imadjust调整G的灰度,结果返回G1

B=I;								  %将图像数据赋值给B
B(:,:,1)=0;							  %将原图像变成单色图像,保留蓝色
B(:,:,2)=0;
B1=imadjust(B,[0 0.3],[0 1],gamma);	  %利用函数imadjust调整B的灰度,结果返回B1

I1=R1+G1+B1;                          %求变换后的RGB图像  

set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])%修改图形背景颜色的设置

figure(1)
subplot(121),imshow(R);%绘制R、R1、G、G1、B、B1图像,观察线性灰度变换结果
subplot(122),imshow(R1); 
figure(2);
subplot(121),imshow(G);
subplot(122),imshow(G1);
figure(3);
subplot(121),imshow(B);
subplot(122),imshow(B1);
figure(4);
subplot(121),imshow(I);
subplot(122),imshow(I1);

在这里插入图片描述

imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵)。

imadjust函数用法如下:

J = imadjust(I)
J = imadjust(I,[low_in; high_in],[low_out; high_out])
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
newmap = imadjust(map,[low_in; high_in],[low_out;high_out],gamma)
RGB2 = imadjust(RGB1,___)
gpuarrayB = imadjust(gpuarrayA,___)

J = imadjust(I)
将灰度图像 I 中的亮度值映射到 J 中的新值并使 1% 的数据是在低高强度和饱和,这增加了输出图像 J 的对比度值。此用法相当于 imadjust(I,stretchlim(I))

J = imadjust(I,[low_in; high_in],[low_out; high_out])
将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。

J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
将图像 I 中的亮度值映射到 J 中的新值,其中== gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。==

newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)
调整索引色图像的调色板map。如果low_in, high_in, low_out, high_out 和 gamma 都是标量,那么对 r,g,b 分量同时都做此映射。对于每个颜色分量都有唯一的映射,当 low_in 和 high_in 同时为13向量或者 low_out 和 high_out 同时为13向量或者 gamma 为1*3向量时。调整后的颜色矩阵 newmap 和 map 有相同的大小。

RGB2 = imadjust(RGB1,…)
对 RGB 图像 RGB1 的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。

分段线性灰度变换

close all;              %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clear all;
clc;
R=imread('peppers.png');%读入原图像,赋值给R
J=rgb2gray(R);          %将彩色图像数据R转换为灰度图像数据J
[M,N]=size(J);          %获得灰度图像数据J的行列数M,N
x=1;y=1;                %定义行索引变量x、列索引变量y    
for x=1:M
    for y=1:N
        if (J(x,y)<=35);     %对灰度图像J进行分段处理,处理后的结果返回给矩阵H
            H(x,y)=J(x,y)*10;
        elseif(J(x,y)>35&J(x,y)<=75);
            H(x,y)=(10/7)*[J(x,y)-5]+50;
        else(J(x,y)>75);
            H(x,y)=(105/180)*[J(x,y)-75]+150;
        end
    end
end
set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])%修改图形背景颜色的设置
subplot(121),imshow(J)%显示处理前后的图像
subplot(122),imshow(H);

在这里插入图片描述

非线性灰度变换

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);

在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值