يكشنبه, ۲۵ خرداد ۱۳۹۹، ۰۸:۲۱ ق.ظ
کد تشخیص لبه و چین و چروک پنجره حداقل
مبنای این کد به این شکل است که با حرکت در طول عکس، و با انتخاب یک بازه در محور 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
۹۹/۰۳/۲۵