ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠ°ΡΡΡ Π² MatLab Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ imread.
f=imread ('ΡΠΎΠΏΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠ°ΡΡΠ° 1. jpg');
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠ° ΠΊΠ°ΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° f, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½Π° ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ. Π’ΠΎΠΏΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠ²Π΅ΡΠ½ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅, Π½ΠΎ ΡΠ΅Π»ΡΠ΅Ρ ΠΈ ΡΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ΅ΡΠ½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ. ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
fR = f (,, 1);
fG = f (,, 2);
fB = f (,, 3);
gray=((fR>150)&(fG<150)&(fB<150)).
ΠΡ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ ΠΈ ΡΠΈΠ½ΠΈΠΉ ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΠ°Π»Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ size ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. Π Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ bwlabel ΠΈ Π½Π°ΠΉΠ΄Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ regionprops, ΡΠΎ Π΅ΡΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Area ΠΈ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BoundingBox. ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡ.
[Ny, Nx]=size (gray);
[labeled, num] = bwlabel (gray, 8);
stats = regionprops (labeled, 'Area','BoundingBox');
ΠΡΠΈΡΡΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΡΠΌΠ°. ΠΡΠ»ΠΈ Π΅ΡΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, Π²ΠΎΠΊΡΡΠ³ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎ ΠΎΠ½ ΠΈΡ
ΡΠ΄Π°Π»ΠΈΡ. Π ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· ΡΡΠΌΠΎΠ².
for i=1:num.
if stats (i).Area<15.
for xx=min (ceil (stats (i).BoundingBox (1)), Nx):min (ceil (stats (i).BoundingBox (1)+stats (i).BoundingBox (3)-1), Nx).
for yy=min (ceil (stats (i).BoundingBox (2)), Ny):min (ceil (stats (i).BoundingBox (2)+stats (i).BoundingBox (4)-1), Ny).
if labeled (yy, xx)==i.
gray (yy, xx)=0;
end.
end.
end.
end.
end.
grayN=gray;