%--------------------------------------------------------------------------------------------------------------------- %前置清除工作 clear; %清空變數 close all; %清空視窗 clc; %清空計算 %---------------------------------------------------------------------------------------------------------------------
%前置準備圖像工作 RGB = imread('A.jpg');%讀取圖像(請自行更變圖片)+定義"RGB" figure('name','過程');%視窗名稱 subplot(2,2,1); %設定圖塊位置(1) imshow(RGB); %導入原圖 title('A.jpg'); %顯示圖像顯示標題 %--------------------------------------------------------------------------------------------------------------------- %步驟一、RGB到YCBCR的色彩空間轉換。 YCBCR = rgb2ycbcr(RGB); %導入轉換ycbcr套件,定義"YCBCR" subplot(2,2,2); %設定圖塊位置(2) imshow(YCBCR); %導入YCBCR處理過的圖 title('RGB轉YCBCR'); %設定圖名 Y_MIN = 0; %定義Y(灰階亮度)最小值=0 Y_MAX = 256; %定義Y(灰階亮度)最大值=256 Cb_MIN = 100;%定義Cb(藍色部分亮度差異值)最小值=100 Cb_MAX = 127;%定義Cb(藍色部分亮度差異值)最大值=127 Cr_MIN = 138;%定義Cr(紅色部分亮度差異值)最小值=138 Cr_MAX = 170;%定義Cr(紅色部分亮度差異值)最小值=170 %--------------------------------------------------------------------------------------------------------------------- %步驟二、用各個通道的閾值對圖像進行二值化。 threshold=roicolor(YCBCR(:,:,1),Y_MIN,Y_MAX)&roicolor(YCBCR(:,:,2),Cb_MIN,Cb_MAX)&roicolor(YCBCR(:,:,3),Cr_MIN,Cr_MAX);%定義"threshold"閾值(極限門檻值)進行二值化處理 subplot(2,2,3);%設定圖塊位置(3) imshow(threshold);%導入二值化處理的圖 title('YCBCR+二值化');%設定圖名 %--------------------------------------------------------------------------------------------------------------------- %步驟三、形態學處理 erodeElement = strel('square', 3) ; %侵蝕效果設定[3] dilateElement=strel('square', 8) ; %膨脹效果設定[8] threshold = imerode(threshold,erodeElement); %侵蝕 threshold = imdilate(threshold, dilateElement); %膨脹 threshold = imfill(threshold,'holes'); %填補孔洞 subplot(2,2,4); %設定圖塊位置(4) imshow(threshold); %導入形態處理過的圖 title('形態處理'); %設定圖名 %--------------------------------------------------------------------------------------------------------------------- %步驟四、連通區域提取。 stats = regionprops(threshold, 'basic');
%定義"stats",然後讓二值化的圖導入函數庫測量影象區域 figure('name','處理結果') %建立新視窗 [C,area_index]=max([stats.Area]);%定義"C"定義"area_index"
face_locate=[stats(area_index).Centroid(1),stats(area_index).Centroid(2)];
%定義"face_locate",定義位置
imshow(RGB); %導入原圖
title('定位臉部區域'); %設定圖名
rectangle('Position',[stats(area_index).BoundingBox],'LineWidth',2,'LineStyle','--','EdgeColor','r');
%臉部繪製紅色框架 %---------------------------------------------------------------------------------------------------------------------


沒有留言:
張貼留言