【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】

一、简介

1 RGB颜色空间:
RGB(red,green,blue)颜色空间最常用的用途就是显示器系统(计算机、电视机等都是采用RGB颜色空间来进行图像显示)。一般来说,电脑,电视机等是利用三个电子枪分别发射R分量,G分量,B分量的电子束,以此来激发屏幕上的RGB三种颜色的荧光粉,从而发出不同颜色、不同亮度的像素、进而组成了一幅图像;很明显,RGB颜色空间利用了物理学中的三原色叠加从而组成产生各种不同颜色的原理。在RGB颜色空间中,R、G、B三个分量的属性是独立的。也即是说,RGB颜色可以表示为(Red, Green, Blue)。其中,各个分量的数值越小,亮度越低。数值越大,亮度越高;如:(0,0,0)表示黑色,(255,255,255)表示白色;
RGB颜色空间表示颜色的格式有RGB565,RGB555,RGB24,RGB32等;
其中,RGB565是使用16位表示一个像素:5位表示R,6位表示G,5位表示B;
RGB555是另一种16位表示一个像素的方法:分别用5位来表示RGB分量;剩余一位不用;
RGB24是使用24位表示一个像素:分别用8位表示RGB各个分量;这种方式最为常见;
RGB32是使用32位来表示一个像素:分别用8位表示RGB各个分量;剩余8位为alpha通道,也就是用来表示图像的“透明度”。注意:在某些系统中,剩余的8位并没有使用;
RGB色彩空间称为与设备相关的色彩空间,因为不同的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同 的色彩显示结果。显示器和扫描仪使用的RGB空间与CIE 1931 RGB真实三原色表色系统空间是不同的,后者 是与设备无关的颜色空间。

2 HSV颜色空间:
HSV(hue,saturation,value)表示色相、饱和度和亮度。该颜色空间可以用一个圆锥来表示,如下图所示:
【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】_第1张图片
【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】_第2张图片
这里,hue表示颜色的相位角,取值范围是0—360;S表示颜色的饱和度;S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率,通俗点讲,S表示的是某种颜色的“纯度”, S取值越大,表示色彩越纯,取值越小,表示色彩越灰。V表示色彩的明亮程度,范围从0到1。V等于0表示圆锥的底部定点,也就是黑色,V等于1表示圆锥的顶面,当V=1并且S=0时表示纯白色;需要注意的是:Apple的Mac操作系统以及photoshop都是采用HSV颜色空间。

二、源代码

clc;
clear all;
img=imread('3.bmp');  
R=img(:,:,1);           %获取彩色图像的r值。
G=img(:,:,2);           %获取彩色图像的g值。
B=img(:,:,3);           %获取彩色图像的b值。
I2=rgb2gray(img);       %将图像灰度化。
figure,imshow(I2),title('灰度图像');
BW=im2bw(I2,0.9);       %将图像二值化。

SE=strel('rectangle',[40 30]);      % 结构定义
J2=imopen(BW,SE);                   % 进行开运算去除噪声和平滑边界
figure,imshow(J2),title('对二值图像进行开运算后的结果图像');
SE=strel('square',3);                % 定义3×3腐蚀结构元素
J=imerode(~J2,SE);                  %对图像进行腐蚀操作。
BW2=(~J2)-J;                         % 检测边缘


%填充了已有的检测的连续形状边界
B = imfill(BW2,'holes');            %对图像填充孔洞。
B = bwmorph(B,'remove');            %获得图像中区域边界。


%将不同的图形进行分别标记,num表示连接的图形对象的个数
[Label,num] = bwlabel(B);           %进行标记。
for i = 1 : num
    Area(i) = 0;
end
Label = imfill(Label,'holes');       %填充打过标记的边界线中间围成的图形区域


%计算各个图像的hsv颜色(色度)

HSV = rgb2hsv(img);                  %转换为HSV颜色模型。

[row,col] = size(Label);             %统计填充后的图形中各块图形所含像素的个数的多少
MeanHue = zeros(1,num);             %初始化
    for i = 1 : num
        Hue = zeros(Area(i),1);     %初始化
        nPoint = 0;                 %初始化
        for j = 1 : row
            for k = 1 : col
                if(Label(j,k) == i)
                    nPoint = nPoint + 1;            %对于是连通区域中的点npoint+1.
                    Hue(nPoint,1) = HSV(j,k,1);     %把hsv的值赋给Hue数组。
                end
            end
        end
        
        Hue(:,i) = sort(Hue(:,1));
        for j = floor(nPoint*0.1) : floor(nPoint*0.9)
            MeanHue(i) = MeanHue(i) + Hue(j,1);     %hsv(i)的值赋给MeanHue(i)
        end
        MeanHue(i) = MeanHue(i) / (0.8*nPoint);     %计算出平均的色度值
    end

%调用regionprops函数获得各个联通区域的属性值(中心点坐标,外接椭圆的长短轴长度,面积)[L,num]=bwlabel(BW2);                               %重新进行区域标记。
stats= regionprops(L, 'ALL');                       %调用regionprops函数。
for i= 1:num
longth(i)=stats(i).MajorAxisLength;                 %获得外接椭圆的长轴长度
width(i)=stats(i).MinorAxisLength;                  %获得外接椭圆的短轴长度
end
%初始化。
R2=0;
G2=0;
B2=0;
x=0;
y=0;
%求出似圆性。
for i=1:num
    r(i)=0;
    g(i)=0;
    b(i)=0;
    yuan(i)=longth(i)/width(i);%长轴长度/短轴长度为似圆性特征。
end

三、运行结果

【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】_第3张图片
【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】_第4张图片
【模式识别】基于matlab GUI HSV和RGB模型水果分类【含Matlab源码 380期】_第5张图片

四、备注

完整代码或者代写添加QQ 1564658423
往期回顾>>>>>>
【信号处理】基于matlab HMM的睡眠状态检测【含Matlab源码 050期】
【信号处理】基于matlab CDR噪声和混响抑制【含Matlab源码 051期】
【信号处理】基于matlab最小二乘法解决稀疏信号恢复问题【含Matlab源码 052期】
【信号处理】基于matlab小波变换的音频水印嵌入提取【含Matlab源码 053期】
【信号处理】基于matlab ICA算法信号分离【含Matlab源码 054期】
【信号处理】基于matlab GUI界面的脉搏信号之脉率存档【含Matlab源码 237期】
【信号处理】基于matlab GUI界面的虚拟信号发生器(各种波形)【含Matlab源码 271期】
【信号处理】基于matlab GUI界面信号发生器之电子琴【含Matlab源码 272期】
【信号处理】基于matlab的数字电子琴设计与实现【含Matlab源码 273期】
【雷达通信】基于matlab的雷达数字信号处理【含Matlab源码 281期】
【雷达通信】基于matlab线性调频(LFM)脉冲压缩雷达仿真【含Matlab源码 283期】
【雷达通信】基于mtatlab距离多普勒(RD)、CS、RM算法的机载雷达成像【含Matlab源码 284期】
【雷达通信】《现代雷达系统分析与设计》大作业【含Matlab源码 285期】
【信号处理】基于matlab GUI语音信号综合处理平台【含Matlab源码 290期】
【信号处理】基于matlab GUI语音信号采集【含Matlab源码 291期】
【信号处理】基于matlab GUI语音幅度调制【含Matlab源码 292期】
【信号处理】基于matlab GUI语音合成【含Matlab源码 293期】
【信号处理】基于matlab GUI语音基频识别【含Matlab源码 294期】
【信号处理】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
【信号处理】基于matlab小波变换的语音增强【含Matlab源码 296期】
【信号处理】基于matlab GUI语音傅立叶变换降噪混频【含Matlab源码 297期】
【信号处理】基于matlab GUI维纳滤波之语音增强【含Matlab源码 298期】
【音频处理】基于matlab GUI语音信号处理2【含Matlab源码 299期】
【雷达通信】基于matlab GUI雷达定位【含Matlab源码 302期】
【雷达通信】基于matlab GUI雷达脉冲压缩【含Matlab源码 303期】
【雷达通信】基于matlab GUI雷达定位模拟【含Matlab源码 304期】
【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】## 标题
【边缘检测】基于matlab插值法亚像素边缘检测【含Matlab源码 306期】
【模式识别】基于matlab GUI贝叶斯最小错误率手写数字识别【含Matlab源码 308期】
【模式识别】基于matlab PCA手写数字识别【含Matlab源码 309期】
【模式识别】基于matlab 特征匹配的英文印刷字符识别【含Matlab源码 310期】
【模式识别】基于matlab知识库的手写体数字识别【含Matlab源码 311期】
【模式识别】基于matlab之银行卡数字识别【含Matlab源码 312期】
【图像识别】基于matlab表情检测【含Matlab源码 317期】
【图像检测】基于matlab LSD直线检测【含Matlab源码 318期】
【图像融合】红外与可见光的融合与配准算法【含Matlab源码 319期】
【图像识别】基于matlab帧差法跌倒检测【含Matlab源码 320期】
【图像识别】基于matlab组合BCOSFIRE过滤器进行墙体裂缝识别【含Matlab源码 321期】
【模式识别】基于matlab中值滤波和二值化的跌倒检测【含Matlab源码 344期】
【图像隐写】基于matlab DCT的图像隐写【含Matlab源码 365期】
【图像隐写】基于matlab LSB的图像隐写提取【含Matlab源码 366期】
【图像隐写】基于matlab高斯模型的JPEG图像隐写【含Matlab源码 367期】
【图像隐写】基于matlab图像自适应隐写算法wow【含Matlab源码 368期】
【模式识别】基于matlab GUI SVM和PCA的人脸识别【含Matlab源码 369期】
【视频识别】基于matlab轨迹方法行为识别【含Matlab源码 375期】

你可能感兴趣的