مبنای این کد به این شکل است که با حرکت در طول عکس، و با انتخاب یک بازه در محور y ، کد عددی کل پنجره در صورتی که دارای مقدار حداقل نباشد، برابر مقدار حداقل می کند.
کد متلب:
% Run Demo
[FileName,PathName] = uigetfile('*.jpg','Select the MATLAB code file');
I=imread([PathName,FileName]);
% I=imrotate(I,35,'bilinear');
I = im2double(imread([PathName,FileName]));
img=imrotate(I,35,'bilinear');
imshow(I)
% I=Icrop ;
im2=I(:,:,1)*0+1;
figure;imshow( I);hold on;
facBoundryX2=[1:1:size(I,2)];
facBoundryY2=[1:1:size(I,1) ]*0+ (size(I,1) );
% plot( facBoundryX2,facBoundryY2,'.')
flagout=0;
% imshow(I);hold on;
for ind2=1:numel(facBoundryX2)
for ind1=1:numel(facBoundryY2)
xI=facBoundryX2(ind2);
yI=max(facBoundryY2(ind1),1);
yVect=[yI-4:yI+4];
% yVect=[yI-10:yI+10 ];
yVect=yVect(yVect>0 & yVect<=size(I,1));
if isempty(yVect)
flagout=1;
break
end
minboc=rgb2gray(I(round( yVect) ,round( xI), 1:3));
[v,in]=min( minboc );
facBoundryY2=[1:1:size(I,1) ]*0+ (size(I,1) )-ind1*1;
% hold on;plot(xI,yI,'ro');
try
if v== I( yI,xI)
else
im2(yVect(in),xI)=.5;double(v); %abs(double(v)- double(I1( yI,xI)));
ss=abs(double(v)- double(I( yI,xI)));
end
catch
end
end
imshow(im2 )
if flagout==1
break
end
pause(0.000005)
end
% mesh((double((im2))))
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%-----------software details-----------%%%%%%%%%%%%%%%%%%%%%%
%devloped in Iran(ardebil) %
%Copyright (C) 2017(1396) by moussa hasanzadeh as the head devloper %%
%All rights reserved. %
%programed in mathlab 2016
%gmail:mo30no@gmail.com
%phone 09147082079