Я бы использовал ImageMagick для преобразования диска из полярных в декартовые координаты, а затем, когда вы укажете, какие заштрихованные области вы на самом деле имеете в виду, я подозреваю, что все остальное будет легко:
convert disc.png -distort DePolar 0 cartesian.jpg
Поскольку у меня нет отзывов от вас, я вроде как на ногах. Таким образом, вы также можете преобразовать все, что не закрашено серым, в белый, а все, что серо, в черный, например:
convert disc.png -fuzz 5% -fill black -opaque rgb\(211,211,211\) -fill white +opaque black out.png
И вы можете сделать оба сразу:
convert disc.png -distort depolar 0 -fuzz 5% -fill black -opaque rgb\(211,211,211\) -fill white +opaque black out.png
Затем вы можете вставить изображение в одну строку, например:
convert disc.png -distort depolar 0 -fuzz 5% -fill black -opaque rgb\(211,211,211\) -fill white +opaque black -resize x1\! out.png
(я покажу это при высоте 10 пикселей, чтобы вы могли видеть это)
Теперь ваши координаты - это место, где строка меняется с черного на белый, а белый на черный. Вы можете извлечь их в текст и разобрать их. Либо так:
convert disc.png -distort depolar 0 -fuzz 5% -fill black -opaque rgb\(211,211,211\) -fill white +opaque black -resize x1\! -colorspace gray -threshold 50% txt: | more
# ImageMagick pixel enumeration: 1000,1,255,srgba
0,0: (255,255,255,1) #FFFFFF white
1,0: (255,255,255,1) #FFFFFF white
2,0: (255,255,255,1) #FFFFFF white
3,0: (255,255,255,1) #FFFFFF white
4,0: (255,255,255,1) #FFFFFF white
5,0: (255,255,255,1) #FFFFFF white
6,0: (255,255,255,1) #FFFFFF white
7,0: (255,255,255,1) #FFFFFF white
Или вот так:
convert disc.png -distort depolar 0 -fuzz 5% -fill black -opaque rgb\(211,211,211\) -fill white +opaque black -resize x1\! -colorspace gray -threshold 50% -compress none pbm: | more
P1
1000 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0