Matlab数字图像处理——图像的像素运算(灰度变换)

文章目录

      • 一、图像点运算
      • 二、线性灰度变换
      • 三、分段线性变换
      • 四、非线性变换
    • 完整目录

一、图像点运算

按照灰度变换的数学关系点运算可以分为:

  • 1、线性灰度变换
  • 2、分段线性变换
  • 3、非线性分段变换

二、线性灰度变换

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('三通道都变换后');

结果展示:
Matlab数字图像处理——图像的像素运算(灰度变换)_第1张图片

三、分段线性变换

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);          %显示线性变换后的图像

结果展示:
Matlab数字图像处理——图像的像素运算(灰度变换)_第2张图片

四、非线性变换

例如对数变换:

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数字图像处理——图像的像素运算(灰度变换)_第3张图片

完整目录

Matlab数字图像处理——图像处理工具箱Image Processing Toolbox
Matlab数字图像处理——图像类型的转换
Matlab数字图像处理——图像文件的读取
Matlab数字图像处理——图像文件的显示
Matlab数字图像处理——视频文件的读写
Matlab数字图像处理——图像的像素运算(灰度变换)
Matlab数字图像处理——图像的空间变换
Matlab数字图像处理——图像的平移、邻域操作、区域选取
Matlab数字图像处理——图像增强
Matlab数字图像处理——图像复原

你可能感兴趣的:(Matlab)