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图像')