使用MATLAB提取图片中特定颜色

在做毕设的过程中,用到了这方面的知识,即把TIFF格式图片中含有某一特定颜色的部分提取出来,图片的其他部分变为白色。
提取过程大致包括以下几步:
(1)先将rgb图像转换为hsv图像;

rgb转换到hsv的公式如下:
使用MATLAB提取图片中特定颜色_第1张图片
(2)将图像转换为hsv之后,先创建一个白色图像,再根据需要,通过控制H通道来提取特定颜色的部分,并将提取出来的部分复制到刚刚创建的白色图像上;

下图是H通道控制不同颜色时的取值范围:
使用MATLAB提取图片中特定颜色_第2张图片
(3)最后将hsv图像转换至rgb图像进行显示。

下面以提取图片中的绿色为例,以下是用MATLAB实现的代码:

clear all;
clc;
flag = imread('图片名称.tif'); % 读取图像       
figure;
imshow(flag); % 展示图像     
% 将图像的rgb色彩空间转化至hsv色彩空间
flag_hsv = rgb2hsv(flag);      
% 创建一个白色图像,将特定颜色提取到此处
flag_new = 255*ones(size(flag));
% 将该图像转至hsv色彩空间
flag_new_hsv = rgb2hsv(flag_new);
% 找出图像中绿色的像素
[row, col] = ind2sub(size(flag_hsv),find(flag_hsv(:,:,1)>0.12...
& flag_hsv(:,:,1)< 0.6 & flag_hsv(:,:,2)>0.16 & flag_hsv(:,:,3)>0.18));
% 将图像中的绿色像素复制到刚才新建的白色图像中
for i = 1 : length(row)
    flag_new_hsv(row(i),col(i),:) = flag_hsv(row(i),col(i),:);
end
% 将提取出来的绿色,转化至rgb空间,进行展示
flag_green = hsv2rgb(flag_new_hsv);
figure
imshow(flag_green)

以上就是提取图像中特定颜色的主要原理以及编程实现过程。

你可能感兴趣的:(MATLAB)