image = imread(''); figure,imshow(image); red = double(image(:,:,1)); green = double(image(:,:,2)); blue = double(image(:,:,3)); [m n]=size(red); Y= zeros(m,n); Cb= zeros(m,n); Cr= zeros(m,n); I= zeros(m,n); Q= zeros(m,n); red_gama = zeros(m,n); green_gama = zeros(m,n); blue_gama = zeros(m,n); for i=1:m %gamma 矫正 for j=1:n if red(i,j)>0 && red(i,j)<90 fai=pi*red(i,j)/180; gama=1+*cos(fai); red_gama(i,j)=255*(red(i,j)/255)^(1/gama); elseif red(i,j)>=90 && red(i,j)<=170 fai=pi/2; gama=1+*cos(fai); red_gama(i,j)=255*(red(i,j)/255)^(1/gama); elseif red(i,j)>170 && red(i,j)<=255 fai=pi-pi*(255-red(i,j))/170; gama=1+*cos(fai); red_gama(i,j)=255*(red(i,j)/255)^(1/gama); end if green(i,j)>0 && green(i,j)<90 fai=pi*green(i,j)/180; gama=1+*cos(fai); green_gama(i,j)=255*(green(i,j)/255)^(1/gama); elseif green(i,j)>=90 && green(i,j)<=170 fai=pi/2; gama=1+*cos(fai); green_gama(i,j)=255*(green(i,j)/255)^(1/gama); elseif green(i,j)>170 && green(i,j)<=255 fai=pi-pi*(255-green(i,j))/170; gama=1+*cos(fai); green_gama(i,j)=255*(green(i,j)/255)^(1/gama); end if blue(i,j)>0 && blue(i,j)<90 fai=pi*blue(i,j)/180; gama=1+*cos(fai); blue_gama(i,j)=255*(blue(i,j)/255)^(1/gama); elseif blue(i,j)>=90 && blue(i,j)<=170 fai=pi/2; gama=1+*cos(fai); blue_gama(i,j)=255*(blue(i,j)/255)^(1/gama); elseif blue(i,j)>170 && blue(i,j)<=255 fai=pi-pi*(255-blue(i,j))/170; gama=1+*cos(fa
肤色分割人脸检测matlab代码 来自淘豆网m.daumloan.com转载请标明出处.