Matlab灰度图像反转,对数变换,幂次变换

1 图像反转

**目的: ** 图像反转可以使得图像的灰度值发生反转,实现亮暗反转,暗边亮,亮边暗。

数学原理: 加入一个图像的灰度值范围为[0,255],设图像的一像素的灰度值为x,图像反转后灰度值Y=255-X

​ 假如一幅图的灰度级范围为[0,L-1]。 图像反转后灰度等级s=L-1-r 。 r为图像原来的亮度

%灰度取反Leena

clear all;

clc;

im1=imread('leena.png'); %读取原始彩色图像

subplot(1,3,1),imshow(im1);

imshow(im1)

im2=rgb2gray(im1); %获得灰度图

subplot(1,3,2),imshow(im1);

imshow(im2)

im3=255-im2; %灰度反转

subplot(1,3,3),imshow(im1);

imshow(im3)

2 对数变换

**目的:**通过对数变换将图像的灰度值较低的像素点的灰度调整到较高的值,通过这个方法可以扩展被压缩的高灰度值图像中的暗像素点。

原理图:

数学原理: s=(log(1+r)/log256 ) ×255** c为常数 ,r为像素点的灰度级,s为运算后的灰度级 , Matlab中的log默认以 e为低。

代码:

clear all

clc

I=imread('leena.png');

I1=im2double(I);%对数运算设计小数,需将图片转为double ,相当于图片像素值除以255

subplot(1,2,1);

imshow(I1);

title('原图像');

L=log(I1*255+1)/log(256)*255;% I1*255得到图像原始的像素值,再进行对数运算 得到增强后的图像像素值

L1=uint8(L);

subplot(1,2,2);

imshow(L1);

title('经对数变换的图像');

效果图:

3幂次变换

目的:通过改变幂的值,可以实现让图像的像素整体变得更暗或者更亮

数学原理s=c * r^(γ) c为常数 γ为常数

clear all

clc

I=imread('leena.png');%读取图像

I1=im2double(I);

subplot(2,3,1)

imshow(I1)

title('原图像')

I2=1.1*I1.^(0.75);

subplot(2,3,2);

imshow(I2);

title('系数=1.1 γ=0.75图像')

I3=1.1*I1.^(0.5);

subplot(2,3,3);

imshow(I3);

title('系数=1.1 γ=0.55图像')

I4=1.1*I1.^(1.3);

subplot(2,3,4);

imshow(I4);

title('系数=1.1 γ=1.3图像')

I5=1.1*I1.^(2);

subplot(2,3,5);

imshow(I5);

title('系数=1.1 γ=2图像')

I6=1.1*I1.^(6);

subplot(2,3,6);

imshow(I5);

title('系数=1.1 γ=6图像')

查看原文