目录
1.概述
在matlab当中,图像是以矩阵形式存放的,矩阵的每一个元素就是像素值,所以对图像进行运算就是对矩阵的运算。(包括点运算、图像的加减乘除运算及图像的逻辑运算或与非)
2.实例
(1)图像点运算
点运算又称为对比度增强、对比度拉伸或灰度变换,是对图像中每个灰度值进行运算的图像处理方式。
1.线性灰度变换
假定原图像A(x,y)的灰度变换范围为[a,b],处理后的图像B(x,y)的灰度扩展为[c,d],线性灰度变换运算的数学表达式为:
B(x,y)=[(d-c)/(b-a)][A(x,y)-a]+c
可以通过函数imadjust()对图像进行线性灰度变换。
实例代码:
close all;clear all;clc;
gamma=0.5;
I=imread('D:\resource_photo\2.jpg');
R=I;
R(:,:,2)=0;
R(:,:,3)=0; %将原图像变成单色图像,保留红色
R1=imadjust(R,[0.5 0.8],[0 1],gamma);%利用函数imadjust()调整R的灰度值
G=I;
G(:,:,1)=0;
G(:,:,3)=0; %将原图像变成单色图像,保留绿色
G1=imadjust(G,[0 0.3],[0 1],gamma);
B=I;
B(:,:,1)=0;
B(:,:,2)=0; %将原图像变成单色图像,保留蓝色
B1=imadjust(B,[0 0.3],[0 1],gamma);
I1=R1+G1+B1;
figure;
subplot(121),imshow(R);
subplot(122),imshow(R1);
figure;
subplot(121),imshow(G);
subplot(122),imshow(G1);
figure;
subplot(121),imshow(B);
subplot(122),imshow(B1);
figure;
subplot(121),imshow(I);
subplot(122),imshow(I1);
运行结果:
2.分段线性灰度变换
分段线性灰度变换可以对图像的细节进行灰度拉伸、对比度增强。
实例代码:
close all;clear all;clc;
R=imread('D:\resource_photo\2.jpg');
J=rgb2gray(R);
[M,N]=size(J);
x=1;y=1;
for x=1:M %对图像J进行分段运算
for y=1:N
if (J(x,y)<=35);
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
figure;
subplot(121),imshow(J);
subplot(122),imshow(H);
运行结果:
(通过行列索引变量x和y,分别读取原灰度图像中每个像