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