% ËÀÁÎÐÀÒÎÐÍÀ ÐÎÁÎÒÀ ¹4 % ÌÅÒÎÄÈ ÂÈIJËÅÍÍß ÊÎÍÒÓв ÎÁ'ªÊҲ ÍÀ ÖÈÔÐÎÂÈÕ % ²ÄÅÎÇÎÁÐÀÆÅÍÍßÕ Â ²ÍÒÅËÅÊÒÓÀËÜÍÈÕ ÑÈÑÒÅÌÀÕ ImageName='saturn.tif'; % ²Ì"ß ÔÀÉËÀ ÇÎÁÐÀÆÅÍÍß % ÂÈÁ²Ð ÌÅÒÎÄÓ Â²Ä²ËÅÍÍß ÊÎÍÒÓв %Type='sobel'; % ÌÅÒÎÄ ÑÎÁÅËß % ÏÀÐÀÌÅÒÐÈ ÌÅÒÎÄÓ %Thresh=0.05; % ÏÎвà ÄËß ÂÈÇÍÀ×ÅÍÍß ÊÎÍÒÓÐÀ %Direction='both'; % ÍÀÏÐßÌÎÊ ÐÎÇÒÀØÓÂÀÍÍß ÊÎÍÒÓв % 'horizontal' - ÃÎÐÈÇÎÍÒÀËÜÍÈÉ % 'vertical' - ÂÅÐÒÈÊÀËÜÍÈÉ % 'both' -  ÎÁÎÕ ÍÀÏÐßÌÊÀÕ Type='prewitt'; % ÌÅÒÎÄ ÏÐŲÒÀ % % ÏÀÐÀÌÅÒÐÈ ÌÅÒÎÄÓ Thresh=0.05; % ÏÎвà ÄËß ÂÈÇÍÀ×ÅÍÍß ÊÎÍÒÓÐÀ Direction='both'; % ÍÀÏÐßÌÎÊ ÐÎÇÒÀØÓÂÀÍÍß ÊÎÍÒÓв % % 'horizontal' - ÃÎÐÈÇÎÍÒÀËÜÍÈÉ % % 'vertical' - ÂÅÐÒÈÊÀËÜÍÈÉ % % 'both' -  ÎÁÎÕ ÍÀÏÐßÌÊÀÕ % % Type='roberts'; % ÌÅÒÎÄ ÐÎÁÅÐÒÑÀ % % ÏÀÐÀÌÅÒÐÈ ÌÅÒÎÄÓ % Thresh=0.05; % ÏÎвà ÄËß ÂÈÇÍÀ×ÅÍÍß ÊÎÍÒÓÐÀ % Direction='both'; % ÍÀÏÐßÌÎÊ ÐÎÇÒÀØÓÂÀÍÍß ÊÎÍÒÓв % % 'horizontal' - ÃÎÐÈÇÎÍÒÀËÜÍÈÉ % % 'vertical' - ÂÅÐÒÈÊÀËÜÍÈÉ % % 'both' -  ÎÁÎÕ ÍÀÏÐßÌÊÀÕ % % Type='log'; % ÌÅÒÎÄ ËÀÏËÀÑÈÀÍÀ ÊÐÈÂί ÃÀÓÑÑÀ % % ÏÀÐÀÌÅÒÐÈ ÌÅÒÎÄÓ % Thresh=0.005; % ÏÎвà ÄËß ÂÈÇÍÀ×ÅÍÍß ÊÎÍÒÓÐÀ % Direction='both'; % ÍÀÏÐßÌÎÊ ÐÎÇÒÀØÓÂÀÍÍß ÊÎÍÒÓв % % 'horizontal' - ÃÎÐÈÇÎÍÒÀËÜÍÈÉ % % 'vertical' - ÂÅÐÒÈÊÀËÜÍÈÉ % % 'both' -  ÎÁÎÕ ÍÀÏÐßÌÊÀÕ % % Type='canny'; % ÌÅÒÎÄ ÊÀÍÍÈ % % ÏÀÐÀÌÅÒÐÈ ÌÅÒÎÄÓ % Thresh=0.05; % ÏÎвà ÄËß ÂÈÇÍÀ×ÅÍÍß ÊÎÍÒÓÐÀ % Direction='both'; % ÍÀÏÐßÌÎÊ ÐÎÇÒÀØÓÂÀÍÍß ÊÎÍÒÓв % % 'horizontal' - ÃÎÐÈÇÎÍÒÀËÜÍÈÉ % % 'vertical' - ÂÅÐÒÈÊÀËÜÍÈÉ % % 'both' -  ÎÁÎÕ ÍÀÏÐßÌÊÀÕ % ÇÀÂÀÍÒÀÆÅÍÍß ÏÎ×ÀÒÊÎÂÎÃÎ ÇÎÁÐÀÆÅÍÍß OrigImage=imread(ImageName); if ndims(OrigImage)==3 OrigImage=rgb2gray(OrigImage); end % ÄÎÄÀÂÀÍÍß ØÓÌÓ ÄÎ ÇÎÁÐÀÆÅÍÍß NoiseImage = imnoise(OrigImage,'salt & pepper',0.2); % Ô²ËÜÒÐÀÖ²ß ÇÎÁÐÀÆÅÍÍß % ÓÑÅÐÅÄÍÞÞ×ÈÉ Ô²ËÜÒÐ Ç ÊÂÀÄÐÀÒÍÎÞ ÌÀÑÊÎÞ Hsize x Hsize ÒÎ×ÎÊ Tfilter='average'; % ÒÈÏ Ô²ËÜÒÐÀ Hsize=5; % ÐÎÇ̲РÊÂÀÄÐÀÒÍί ÌÀÑÊÈ Ô²ËÜÒÐÀ Filter=fspecial(Tfilter,Hsize); % ÑÒÂÎÐÅÍÍß ÌÀÑÊÈ Ô²ËÜÒÐÀ RestoreImage=imfilter(NoiseImage, Filter); % ÂÈIJËÅÍÍß ÊÎÍÒÓв % ÂÈÊÎÐÈÑÒÀÍÍß ÇÀÄÀÍÈÕ ÏÀÐÀÌÅÒв BW1=edge(OrigImage,Type,Thresh,Direction); BW2=edge(NoiseImage,Type,Thresh,Direction); BW3=edge(RestoreImage,Type,Thresh,Direction); % ÀÂÒÎÌÀÒÈ×ÍÅ ÂÈÇÍÀ×ÅÍÍß ÏÎÐÎÃÓ %[BW1,Tresh1]=edge(OrigImage,Type); %[BW2,Tresh2]=edge(NoiseImage,Type); %[BW3,Tresh3]=edge(RestoreImage,Type); CountEdge1=nnz(double(BW1)); CountEdge2=nnz(double(BW2)); CountEdge3=nnz(double(BW3)); % ÂÈÂÅÄÅÍÍß ÐÅÇÓËÜÒÀҲ fprintf('\nÌÅÒÎÄÈ ÂÈIJËÅÍÍß ÊÎÍÒÓв ÎÁ''ªÊҲ ÍÀ ²ÄÅÎÇÎÁÐÀÆÅÍÍßÕ\n'); fprintf('ÇÀÃÀËÜÍÀ ÄÎÂÆÈÍÀ ÊÎÍÒÓв ÍÀ ÏÎ×ÀÒÊÎÂÎÌÓ ÇÎÁÐÀÆÅÍͲ %7.0f ÄÈÑÊÐÅÒÍÈÕ ÒÎ×ÎÊ\n', CountEdge1); fprintf('ÇÀÃÀËÜÍÀ ÄÎÂÆÈÍÀ ÊÎÍÒÓв ÍÀ ÇÎÁÐÀÆÅÍͲ Ç ØÓÌÎÌ %7.0f ÄÈÑÊÐÅÒÍÈÕ ÒÎ×ÎÊ\n', CountEdge2); fprintf('ÇÀÃÀËÜÍÀ ÄÎÂÆÈÍÀ ÊÎÍÒÓв ÍÀ ²ÄÍÎÂËÅÍÎÌÓ ÇÎÁÐÀÆÅÍͲ %7.0f ÄÈÑÊÐÅÒÍÈÕ ÒÎ×ÎÊ\n', CountEdge3); subplot(3,2,1); imshow(OrigImage); title('ÏÎ×ÀÒÊÎÂÅ ÇÎÁÐÀÆÅÍÍß'); subplot(3,2,2); imshow(BW1); title('ÊÎÍÒÓÐÈ ÍÀ ÏÎ×ÀÒÊ. ÇÎÁÐ.'); subplot(3,2,3); imshow(NoiseImage); title('ÇÎÁÐÀÆÅÍÍß Ç ØÓÌÎÌ'); subplot(3,2,4); imshow(BW2); title('ÊÎÍÒÓÐÈ ÍÀ ÇÎÁÐ. Ç ØÓÌÎÌ'); subplot(3,2,5); imshow(RestoreImage); title('²ÄÍÎÂËÅÍÅ ÇÎÁÐÀÆÅÍÍß'); subplot(3,2,6); imshow(BW3); title('ÊÎÍÒÓÐÈ ÍÀ ²ÄÍÎÂËÅÍÎÌÓ ÇÎÁÐ. ');