%% phong光照模型
%中心是(777,942),产生一个171*171的矩形框,因此中心是(86,86)
% 图片反光中心位置(m,n)
function [NewGimg] = myphong(Gimg,fanguangParam) %输入G通道,反光中心和反光区域,输出处理后的图片
m=fanguangParam(1);n=fanguangParam(2);
width=fanguangParam(3);height=fanguangParam(4);
y0=floor(width/2);x0=floor(height/2);
% 读取反光ROI
% Oimg=imread('ROIorigin_4 (14).jpg');
% ROIimg=Oimg(m-x0:m+x0,n-y0:n+y0,:);
% figure,subplot(131),imshow(ROIimg);
% 构造漫反射模扳
Il=8;z=67.5;Fn=1;%
Kd=0.08 %漫反射系数
Ks=2.8;%镜面反射系数
cosxy=zeros(width,height);
for y=1:width
for x=1:height
cosxy(x,y)=z/(sqrt((x-x0)^2+(y-y0)^2+z^2));
end
end
DUFmask=Il*Kd*cosxy;
% 构造镜面反射模扳
cosfy=2*(cosxy).^2-1;
noziter=find(cosfy<0);
cosfy(noziter)=0;
DIFmask=Il*Ks*cosfy.^Fn;
% 内部小圆处理
smallr=2;
for y=1:width
for x=1:height
if (x-x0)^2+(y-y0)^2<smallr^2
DIFmask(x,y)=0;
DUFmask(x,y)=0;
end
end
end
figure,subplot(121),imshow(DUFmask,[]);
subplot(122),imshow(DIFmask,[]);
% GGROIimg=ROIimg(:,:,2);
% 考虑漫反射和镜面反射的phong模型
Ibground=DUFmask+DIFmask;
% 提取G通道并去除镜面反射
% Gimg=Oimg(:,:,2);
NewGimg=Gimg;
GROIimg=double(Gimg(m-x0:m+x0,n-y0:n+y0))-Ibground;% 中间ROI处减去镜面值
NewGimg(m-x0:m+x0,n-y0:n+y0)=GROIimg;
figure,subplot(121),imshow(Gimg);subplot(122),imshow(NewGimg);
end