按照灰度变换的数学关系点运算可以分为:
Matlab中可用于灰度变换的函数:imadjust
以下代码将演示R、G、B三个通道单独变换以及全部变换的对比:
gamma = 0.5; %设定调整线性变换的取值
I = imread('火影1.jpg'); %读取图像并赋值给 I
R = I; % R 用于保留图像的红色通道
R(:, :, 2) = 0; %将R的绿色通道设为0
R(:, :, 3) = 0; %将R的蓝色通道设为0
R1 = imadjust(R, [0.5 0.8], [0 1], gamma); %函数imadjust调整R的灰度
G = I; % G 用于保留图像的绿色通道
G(:, :, 1) = 0; %将G的红色通道设为0
G(:, :, 3) = 0; %将G的蓝色通道设为0
G1 = imadjust(G, [0 0.3], [0 1], gamma); %函数imadjust调整G的灰度
B = I; % B 用于保留图像的绿色通道
B(:, :, 1) = 0; %将B的红色通道设为0
B(:, :, 2) = 0; %将B的蓝色通道设为0
B1 = imadjust(B, [0 0.3], [0 1], gamma); %函数imadjust调整B的灰度
I1 = R1 + G1 + B1; %变换后的RGB图像
figure;
subplot(241);imshow(R);title('仅红色通道');
subplot(242);imshow(R1);title('仅红色通道变换后');
subplot(243);imshow(G);title('仅绿色通道');
subplot(244);imshow(G1);title('仅绿色通道变换后');
subplot(245);imshow(B);title('仅蓝色通道');
subplot(246);imshow(B1);title('仅蓝色通道变换后');
subplot(247);imshow(I);title('原图像');
subplot(248);imshow(I1);title('三通道都变换后');
I = imread('火影1.jpg'); %读取RGB图像
J = rgb2gray(I); %将RGB图像转化为灰度图
[M, N] = size(J); % M,N 获取图像行列数
x = 1;
y = 1;
for x = 1: M
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(131);imshow(I); %显示原图像
subplot(132);imshow(J); %显示灰度图像
subplot(133);imshow(H); %显示线性变换后的图像
例如对数变换:
I = imread('火影1.jpg'); %读取RGB图像
G = rgb2gray(I); %将RGB图像转化为灰度图
J = double(G); %将数据类型转换为双精度
H = log(J + 1) / 10; %进行基于对数的非线性灰度变换
figure;
subplot(131);imshow(I); %原图像
subplot(132)
imshow(G); %灰度图
subplot(133)
imshow(H); %对数变换图像
Matlab数字图像处理——图像处理工具箱Image Processing Toolbox
Matlab数字图像处理——图像类型的转换
Matlab数字图像处理——图像文件的读取
Matlab数字图像处理——图像文件的显示
Matlab数字图像处理——视频文件的读写
Matlab数字图像处理——图像的像素运算(灰度变换)
Matlab数字图像处理——图像的空间变换
Matlab数字图像处理——图像的平移、邻域操作、区域选取
Matlab数字图像处理——图像增强
Matlab数字图像处理——图像复原