Matlab图像处理——RGB分量提取、变换、组合

1、问题提出

读取RGB彩色图像,将红色分量,绿色分量。蓝色分量提取出来,分别进行如下变化:像素值小于100的改为0,像素值大于200的改成255,其他像素值乘以2再减去60,然后进行各分量的组合得到新的图像。


2、程序编写:

本程序主要运用for循环语句,和一些基本的函数库:imread(读取图片)、cat(进行RGB各分量的组合)、imshow(绘制图像)。采用的图片为RGB彩色图片,像素大小为512×480,文件命名frutis.jpg,如下:
在这里插入图片描述
(1)RGB分量的读取

%读取分量
rgb_image=imread('fruits.jpg');%读取图片
fR=rgb_image(:, :, 1);%读取红色分量
fG=rgb_image(:, :, 2);%读取绿色分量
fB=rgb_image(:, :, 3);%读取蓝色分量

(2)RGB分量的变换

%对红色分量进行变换
fR2=double(fR);%转换为双精度浮点类型
for i=1:1:480
    for j=1:1:512  %遍历
        if(fR2(i,j)<100)
            fR2(i,j)=0;  %像素小于100的等于0
        elseif(fR2(i,j)>200)
            fR2(i,j)=255;  %像素大于200的等于255
        else
            fR2(i,j)=2.*fR2(i,j)-60;%其他的像素点乘以2倍再减60
        end
    end
end
fR2=uint8(fR2);%强制将数据转换为8位无符号整数

%对绿色分量进行变换
fG2=double(fG);%转换为双精度浮点类型
for i=1:1:480
    for j=1:1:512  %遍历
        if(fG2(i,j)<100)
            fG2(i,j)=0;  %小于100的等于0
        elseif(fG2(i,j)>200)
            fG2(i,j)=255;  %大于200的等于255
        else
            fG2(i,j)=2.*fG2(i,j)-60;%其他的像素点乘以2倍再减60
        end
    end
end
fG2=uint8(fG2);%强制将数据转换为8位无符号整数

%对蓝色分量进行变换
fB2=double(fB);%转换为双精度浮点类型
for i=1:1:480
    for j=1:1:512  %遍历
        if(fB2(i,j)<100)
            fB2(i,j)=0;  %像素小于100的等于0
        elseif(fB2(i,j)>200)
            fRB2(i,j)=255;  %像素大于200的等于255
        else
            fB2(i,j)=2.*fB2(i,j)-60;%其他的像素点乘以2倍再减60
        end
    end
end
fR2=uint8(fR2);%强制将数据转换为8位无符号整数

(3)RGB分量的组合

%组合变换后的图像
rgb_1=cat(3,fR2,fG2,fB2);%利用变换后的各分量进行图像的组合

(4)绘制命令

%显示图像
figure(1)
subplot(231);imshow(fR);title('原始红色分量');
subplot(234);imshow(fR2);title('变换后红色分量');
subplot(232);imshow(fG);title('原始绿色分量');
subplot(235);imshow(fG2);title('变换后绿色分量');
subplot(233);imshow(fB);title('原始蓝色分量');
subplot(236);imshow(fB2);title('变换后蓝色分量');
figure(2)
subplot(121);imshow(rgb_image);title('原始图像');
subplot(122);imshow(rgb_1);title('重新组合后图像');

3、运行结果

在这里插入图片描述在这里插入图片描述


最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真…希望能帮到你!
在这里插入图片描述