1. 程式人生 > 其它 >【影象分割】基於 RGB HSV YCbCr Lab顏色空間人臉檢測matlab原始碼

【影象分割】基於 RGB HSV YCbCr Lab顏色空間人臉檢測matlab原始碼

技術標籤:matlab影象處理

一、簡介

現代資訊社會對於身份鑑別的準確性、安全性與實用性提出了更高的要求,傳統的身份識別方法已經不能滿足這種要求,而人體豐富的生理和行為特徵為此提供了一個可靠的解決方案,因而引起了國際學術界和企業界的廣泛關注。生物識別是一種根據人體自身的生理特徵(如指紋、臉像、虹膜等)和行為特徵(如筆跡、聲音、步態等)來識別身份的技術。近年來,隨著模式識別、影象處理和資訊感測等技術的不斷髮展,生物識別顯示出更為廣闊的應用前景。眾所周知,其他的生物測定方法如指紋、聲音和虹膜等,由於要求被測定者的主動配合參與,才能達到識別的目的,而人臉識別卻不受這種限制,因此人臉識別正在成為當前人們關注和投入較大研究力量的重點。

Lab色彩空間被設計用來接近人類視覺,它致力於感知均勻性。
在Lab空間中,L表示亮度,a和b表示顏色對立的維度。L值為O時色彩為黑色,L值接近100時為白色;a值表示色彩在紅色和綠色之間的位置;b值表示色彩在藍色和黃色之間的位置。在CIELAB模型中,a值大於0時表示紅色,a值小於O時表示綠色,b值大於O時表示黃色。
Lab顏色空間是一種與裝置無關的顏色系統,是基於1931年CIE頒佈的色彩度量國際標準建立的,是由CIE XYZ通過數學轉換得到的均勻色度空間。CIE XYZ空間採用了理想的原色X、Y、Z代替R、G、B,而理想原色的選擇是基於RGB顏色空間採用數學方法建立的,其中,X、Y、Z分別描述紅原色、綠原色和藍原色。這三個分量是虛擬的假色彩,並非真色彩。

二、原始碼

clc,clear,close all
warning off
feature jit off       % 加速程式碼執行,提高執行時間
rgb=imread('xbb.jpg');  % 載入影象
% imshow(rgb);
r = rgb(:, :, 1);  % R通道
g = rgb(:, :, 2);  % G通道
b = rgb(:, :, 3);  % B通道
[m,n]=size(r);
cform = makecform('srgb2lab'); % color transformation structure
J = applycform(rgb,cform);     % color space transformation
M=graythresh(J(:,:,3));        % 閾值
BW2=im2bw(J(:,:,3),M);         %二值化
BW2= bwareaopen(BW2, 300);     %剔除小塊
% imshow(BW2)
cc=bwconncomp(BW2);            % 連通性檢查
s  = regionprops(BW2, {'centroid','area'});  %標記塊重心
[~, id] = max([s.Area]);     % 找出最大塊的標號
BW2(labelmatrix(cc)~=id)=0;  % 非最大塊置為背景
r1=immultiply(r,~BW2);  % 交運算
g1=immultiply(g,~BW2);  % 交運算
b1=immultiply(b,~BW2);  % 交運算
xbb=cat(3,r1,g1,b1);    % 合成3-D
figure;imshow(xbb);     % 顯示
%%
for i=1:m
    for j=1:n
      if (r1(i,j)>=145&&r1(i,j)<=255)&&(g1(i,j)>=50&&g1(i,j)<=255)&&(b1(i,j)>=20&&b1(i,j)<=220)%改面板色
            r1(i,j)=150;g1(i,j)=250;b1(i,j)=250;
      end
      if (r1(i,j)>=240&&r1(i,j)<=255)&&(g1(i,j)>=240&&g1(i,j)<=255)&&(b1(i,j)>=220&&b1(i,j)<=255)%改背景白色
            r1(i,j)=255;g1(i,j)=0;b1(i,j)=255;
      end
      if (r1(i,j)>=0&&r1(i,j)<=2)&&(g1(i,j)>=0&&g1(i,j)<=2)&&(b1(i,j)>=0&&b1(i,j)<=2)%改背景黑色
            r1(i,j)=200;g1(i,j)=255;b1(i,j)=0;
      end
      if (r1(i,j)>=0&&r1(i,j)<=170)&&(g1(i,j)>=0&&g1(i,j)<=172)&&(b1(i,j)>=0&&b1(i,j)<=180)%改頭髮黑色
            r1(i,j)=120;g1(i,j)=155;b1(i,j)=255;
      end
    end
end
clc,clear,close all
warning off
im=imread('1.jpg');    % 讀圖
im_gray=rgb2gray(im);  % 轉為灰度影象
R=im(:,:,1);G=im(:,:,2);B=im(:,:,3);
hsv_im=rgb2hsv(R,G,B); % RGB到HSV
subplot(121),subimage(im) % 顯示影象
axis off
title('RGB')
subplot(122),subimage(hsv_im)

function [h,s,v] = rgb2hsv(r,g,b)
%RGB2HSV Convert red-green-blue colors to hue-saturation-value.
% 色度(H)和飽和度(S)、亮度(V)
switch nargin
  case 1,  % 輸入一個量,即一副RGB影象
     validateattributes(r, {'uint8', 'uint16', 'double', 'single'}, {'real'}, mfilename, 'RGB', 1);
     function ycrcb_im =  rgb2ycrcb(r,g,b)
% RGB顏色空間向YCrCb彩色空間轉化
switch nargin
  case 1,  % 輸入一個量,即一副RGB影象
     validateattributes(r, {'uint8', 'uint16', 'double', 'single'}, {'real'}, mfilename, 'RGB', 1);

四、備註

完整程式碼或者代寫新增QQ1575304183

往期回顧>>>>>>

【影象聚類】基於FCM和改進的FCM腦部CT影象聚類處理

【影象增強】PSO尋優ACE的影象增強matlab原始碼

【影象增強】基於區域相似變換函式和蜻蜓演算法的灰度影象增強

【影象增強】基於區域性對比度增強的CLAHE演算法 --直方圖增強
【影象重建】影象重建之ASTRA演算法matlab原始碼

【影象評價】基於CCF演算法的影象質量評價

【影象隱藏】基於混沌系統的影象加密解密matlab原始碼含GUI

【影象隱藏】基於DWT+DCT+PBFO改進影象水印隱藏提取matlab原始碼含GUI

【影象隱藏】基於正交拉丁方置亂之影象隱藏matlab原始碼

【影象隱藏】基於Laguerre 變換的影象隱藏matlab原始碼

【影象壓縮】基於小波變換的影象壓縮matlab原始碼