Вы можете обнаружить объекты изображения на изображениях, используя библиотеку openCV (через java-адаптер);для этого вам нужно будет обучить сеть кружкам.
Что касается именно вашего случая (возможно, это решение не будет универсальным), вы можете разделить ваше изображение на сегменты и, используя в качестве условия - изменение цвета, см. ниже псевдокод:
//build color switching list
List<Point> colorSwitches = ...
for(each horizontal line from image){
for(each pixel from line){
if(color of previous pixel != color of current pixel){
colorSwitches.add(currentPoint)
}
}
}
// so, you have detected margins of your image objects; now we need to merge neighbor pixels into image objects, where image object is collection of margin points(you should create this class)
List<ImageObject> imageObjects = ...
for(each color switch){
if(current pixel is connected with pixels from existing image objects){
// returns image object neared with current point
getRelatedImageObject(imageObjects).add(currentPoint);
}else{
imageObjects.add(new ImageObject(currentPixel));
}
}
// now we have list of objects from image, and we need to match objects
Хорошо, это общие указания, как делать то, что вам нужно, если вам нужно более точно, я постараюсь объяснить более подробно.Также вы можете связаться со мной напрямую
Надеюсь, это поможет вам.