图像处理——HSV图像应用(matlab)

本文主要讲解如何利用HSV图像识别蘑菇上的异物,并去除异物在这里插入图片描述

一、基础图像处理

进行一系列处理,找到蘑菇位置截图,以免背景光照等因素对异物判断造成影响

%读取图像
img_name = 'picture\C\4_1_1_002.jpeg';
RGB = imread(img_name);
figure,imshow(RGB);
r=RGB(:,:,1);
figure,imshow(r);
threshold = graythresh(r);
bw = im2bw(r,threshold);
figure,imshow(bw);
%删除二值图像bw中面积小于150的对象,默认情况下使用8邻域。
bw = bwareaopen(bw,150);
%闭合(先膨胀后腐蚀),填充物体内细小空洞,连接邻近物体,平滑边界
se = strel('disk',10);
bw = imclose(bw,se);
% 填充二值图像中的由边界包围的空洞区域。
bw = imfill(bw,'holes');
figure,imshow(bw)
% 返回一个和bw大小相同的L矩阵,包含了标记了bw中每个连通区域的类别标签,这些标签的值为12、num(连通区域的个数),默认为8连通寻找
L = bwlabel(bw);
[y,x]=find(L==1);
x0=min(x(:));%找连通域列中最小值
x1=max(x(:));
y0=min(y(:));
y1=max(y(:));
hold on
rectangle('Position',[x0,y0,x1-x0,y1-y0],'edgeColor','g','LineWidth',1)%标出邻接矩阵
I = imcrop(RGB,[x0,y0,x1-x0,y1-y0]);

在这里插入图片描述

二、利用HSV图像进行异物查找与删除

rgb2hsv函数使得RGB图像转换为HSV图像,可以通过数据游标来查看HSV图像中数值,以便区别异物和正常蘑菇颜色
在这里插入图片描述

figure;
subplot(231);imshow(RGB);title('原始图像');
subplot(232);imshow(I);title('截图后的图像');
%第一次色彩空间变换
hsv = rgb2hsv(I);
subplot(233);imshow(hsv);title('HSV图像');
h=hsv(:,:,1);%h、s、v分别对应数据游标取值中的R、G、B
s=hsv(:,:,2);
v=hsv(:,:,3);
[x,y,z]=size(hsv);
for i=1:x
    for j=1:y%找到异物值后进行删除处理(置0),这里还同时置背景为0if(h(i,j)>100/255&&h(i,j)<180/255) %&&(s(i,j)>43/255&&s(i,j)<255/255)%&&
            (v(i,j)>46/255&&v(i,j)<255/255)
                 h(i,j)=0;
                 s(i,j)=0;
                 v(i,j)=0;
             end
    end
end
for i=1:x
    for j=1:y
        hsv(i,j,1)=h(i,j);%把置0的值填入HSV图像
        hsv(i,j,2)=s(i,j);
        hsv(i,j,3)=v(i,j);
    end
end
% k=find(h>0.4);
% h(k)=0;
subplot(234);imshow(hsv);title('去除异物后的HSV图像');
I1 = hsv2rgb(hsv);%HSV图像还原成RGB图像
subplot(235);imshow(I1);title('去除异物后的RGB图像');
% figure,imshow(h);
% figure,imshow(s);
% figure,imshow(v);
R=I1(:,:,1);
subplot(236);imshow(R);title('去除异物后的灰度图像');
figure;imshow(rgb2hsv(I));title('HSV图像');
  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MATLAB可以使用rgb2hsv函数将RGB图像转换为HSV格式。 具体步骤如下: 1. 读取RGB图像 2. 使用rgb2hsv函数将RGB图像转换为HSV格式 3. 可以使用imshow函数显示HSV图像 示例代码如下: ```matlab % 读取RGB图像 rgb_img = imread('test.jpg'); % 将RGB图像转换为HSV格式 hsv_img = rgb2hsv(rgb_img); % 显示HSV图像 imshow(hsv_img); ``` 注意:HSV图像的像素值范围为[,1],需要进行归一化处理后才能显示。 ### 回答2: 在 MatLab 中,可以使用 `rgb2hsv()` 函数来将 RGB 图像转换为 HSV 图像HSV 是一种常用的彩色模型,它包含3个通道:Hue(色调)、Saturation(饱和度)和Value(亮度)。 RGB 是三基色红绿蓝(Red-Green-Blue)的缩写,它表示了每个像素的颜色是由多少红、绿、蓝三种颜色构成的。而 HSV 模型中的 H(色相)表示颜色的种类,S(饱和度)表示颜色的鲜艳程度,V(亮度)则代表颜色的明暗程度。 下面是使用 `rgb2hsv()` 函数将 RGB 图像转换为 HSV 图像的操作步骤: 1. 首先,打开 MatLab 软件,并在命令窗口中输入以下命令: ``` img = imread('image.png'); % 读取 RGB 图像 ``` 其中,`image.png` 是需要转换的 RGB 图像文件名。 2. 接下来,使用 `rgb2hsv()` 函数将 RGB 图像转换为 HSV 图像,并将其保存为 `hsv_img` 变量: ``` hsv_img = rgb2hsv(img); ``` 3. 最后,可以预览转换后的 HSV 图像。用以下命令可以显示 HSV 图像: ``` imshow(hsv_img); ``` 这将在 MatLab 中显示一张新的窗口,其中包含转换后的 HSV 图像。 需要注意的是,转换后的 hsv_img 是一个 [MxNx3] 大小的三维数组,其中 M 和 N 分别表示图像的高度和宽度,最后一个维度为3,分别表示H、S、V三个通道的值。可以通过 `hsv_img(:,:,1)`、`hsv_img(:,:,2)` 和 `hsv_img(:,:,3)` 分别获取 H、S 和 V 通道的值。 ### 回答3: RGB图像是由红色(R)、绿色(G)和蓝色(B)三原色组成的,每个像素点都可以用这三个颜色分量来表示。HSV(即色相、饱和度、明度)色彩空间是一种描述颜色的模型,它将颜色按照色相、饱和度和亮度三个维度分别表示。因此,将RGB图像转换为HSV,可以更方便地对颜色进行处理和分析。 Matlab中提供了函数rgb2hsv()来将RGB图像转换为HSV。以下是该函数的详细使用方法: hsvImage = rgb2hsv(RGBImage) 其中,RGBImage是一个MxNx3的矩阵,代表一个RGB图像,M和N分别表示图像的高度和宽度;hsvImage是一个MxNx3的矩阵,代表转换后的HSV图像。该函数会自动将RGB图像的每个像素点转换为对应的HSV值,并保存在hsvImage中。具体地,将RGB值映射到HSV分量如下: Hue : 0° - 360° Saturation : 0 - 1 Value : 0 - 1 值得注意的是,HSV图像和RGB图像的分辨率和大小是一致的,而颜色信息已经转换为HSV值。在计算颜色直方图、滤波、分割等颜色相关的操作中,这种颜色空间的转换非常实用。例如,若要实现RGB图像中黄色区域的提取,可以通过对HSV图像的色相和饱和度进行阈值分割来实现。特别地,如果仅需要转换单个像素点的颜色,也可以使用此函数。 总之,Matlab提供的rgb2hsv()函数对于处理RGB图像上的颜色操作是非常方便和实用的。该函数能够将RGB图像转换为HSV图像,在HSV颜色空间中更方便地进行颜色分析和调整,提高了颜色分析的效率和便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值