рд╢рд╛рдпрдж рд╣рд░ Android рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдпрд╛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рдиреЗ рдУрдкреЗрд▓реНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣реИрд▓реЛ, рд╢рдмреНрдж рднреА рд▓рд┐рдЦрд╛, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рднреА рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдЧрдВрднреАрд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕реЗрдЯ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдПред рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЗ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП opencv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рдЗрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рдо рдЬрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЕрджреНрднреБрдд
BoofCV рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд╛рдо рдХреЗ рдЕрдВрддрд┐рдо рджреЛ рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдорддрд▓рдм рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ред рдФрд░ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдиреАрдЪреЗ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдореБрдЦреНрдп рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
BoofCV - рд▓рдШреБ рд╡рд┐рд╡рд░рдг
рдЗрд╕рд▓рд┐рдП BoofCV рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЧрддрд┐ C ++encv рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдиреАрдЪ рдирд╣реАрдВ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
тАв рд╡реАрдбрд┐рдпреЛ рдФрд░ рд╡реЗрдм рдХреИрдорд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ;
тАв 3 рдбреА рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди;
тАв рдлрд┐рд▓реНрдЯрд░ (рдзреБрдВрдзрд▓рд╛, рдврд╛рд▓), рд╢реЛрд░ рд╕рдлрд╛рдИ (рддрд░рдВрдЧрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ);
тАв рджреНрд╡рд┐рднрд╛рдЬрди, рд░реВрдкрд╛рддреНрдордХ рд╕рдВрдЪрд╛рд▓рди;
тАв рд╕реАрдорд╛рдУрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛ (рдХреИрдиреА, рд╕реЛрдмреЗрд▓);
тАв рд░реБрдЪрд┐ рдХреЗ рдмрд┐рдВрджреБ рдЦреЛрдЬреЗрдВ;
тАв рд▓рд╛рдЗрдиреЛрдВ, рдЦрдВрдбреЛрдВ, рдЖрдпрддреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ;
тАв рд╕реНрдЯреАрд░рд┐рдпреЛ рдЫрд╡рд┐рдпреЛрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдФрд░ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ - рдЖрдк рд╕реНрд░реЛрдд рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рд▓реЗрдВ:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдЧреЙрд╕рд┐рдпрди рдХрд▓рдВрдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:

рдРрд╕реА рддрд╕реНрд╡реАрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо BlurImageOps.gaussian рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
// рдЗрд╕рдХреЗ рдмрд╛рдж, рдЫрд╡рд┐ ImageUInt8 рдкреНрд░рдХрд╛рд░ рдХреА рдореВрд▓ рдЫрд╡рд┐ рд╣реИ
ImageUInt8 blurred = new ImageUInt8(image.width,image.height) ImageUInt8 blurred = new ImageUInt8(image.width,image.height); BlurImageOps.gaussian(image,blurred,-1,5,null);
рдЕрдм рдореВрд▓ рдЫрд╡рд┐ рдореЗрдВ рд╢реЛрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:


рд╢реЛрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ:
Random rand = new Random(234); ImageUInt8noisy = image.clone(); GeneralizedImageOps.addGaussian(noisy,rand,20,0,255); ImageUInt8denoised = new ImageFloat32(ImageUInt8.width, ImageUInt8.height); int numLevels = 4; WaveletDenoiseFilter< ImageUInt8> denoiser = FactoryImageDenoise.waveletBayes(ImageUInt8.class,numLevels); denoiser.process(noisy,denoised);
рд╕реАрдорд╛рдУрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛:

рдХреЛрдб:
рдореИрдВ
mageUInt8 canny = new ImageUInt8(image.width,image.height);
рдЫрд╡рд┐ рдмрд╛рдЗрдирд░реАрдХрд░рдг:

рдХреЛрдб:
ImageUInt8 binary = new ImageUInt8(image.width,image.height); float mean = PixelMath.sum(image)/(image.width*image.height); ThresholdImageOps.threshold(image, binary,mean,false);
Binarized рдЫрд╡рд┐ рдорд╛рд░реНрдХрдЕрдк:

рдХреЛрдб:
ImageSInt32 blobs = new ImageSInt32(image.width, image.height); int numBlobs = BinaryImageOps.labelBlobs4(binary,blobs);
рд░реБрдЪрд┐ рдХреЗ рдмрд┐рдВрджреБ рдЦреЛрдЬреЗрдВ:

рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╣реИред
рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╣рд╛рдВ рд╣реИ? Android рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ ConvertBitmap рдХреНрд▓рд╛рд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЙрд░реНрдореЗрдЯ рд╕реЗ BoofCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлреЙрд░реНрдореЗрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
Bitmap map = BitmapFactory.decodeResource(getResources(), R.drawable.car5); ImageUInt8 image = ConvertBitmap.bitmapToGray(map, (ImageUInt8)null, null);
рдирд┐рд╖реНрдХрд░реНрд╖:
рдмреЗрд╢рдХ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред BoofCV рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмреЗрд╢рдХ рдпрд╣ opencv рдЬреИрд╕реЗ рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рдЦреЛ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, BoofCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рджрд╣рд▓реАрдЬ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЙрд╕реА рд╕рдордп, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛, рдЬреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрдд рдХреА рдЦреЛрдЬ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░ рд╕рдВрдЦреНрдпрд╛) рдЪрд┐рддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рдЧрднрдЧ 0.2 - 0.5 рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред