/froth_bot

πŸ‘· Nornickel Hackathon Submission

Primary LanguageJupyter Notebook

Please scroll the page down if you don't understand Russian and yet want to know what's going on here :)

ΠšΡƒΠ΄Π° я ΠΏΠΎΠΏΠ°Π»?

Π’ этом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π»Π΅ΠΆΠΈΡ‚ ΠΊΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ с Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π° НорникСля (Ρ‚Ρ€Π΅ΠΊ "ПСнная Π²Π΅Ρ‡Π΅Ρ€ΠΈΠ½ΠΊΠ°"), ΠΊΠΎΠΌΠ°Π½Π΄Π° "Π‘Π²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΠΈ Ρ€Π΅Π΄ΠΊΠΈΡ… ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½Ρ‹Ρ… явлСний".

Π’Ρ…ΠΎΠ΄

56 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎ с мСталлургичСского производства, с этапа Ρ„Π»ΠΎΡ‚Π°Ρ†ΠΈΠΈ 1.

Π’Ρ‹Ρ…ΠΎΠ΄

1) Π‘Ρ‚Π°Ρ‚ΠΈΠΊΠ°: ΠΏΡƒΠ·Ρ‹Ρ€ΠΈ ΠΈ ΠΈΡ… характСристики

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ½Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ нашли Π±Π»ΠΈΠΊΠΈ, Π·Π°Ρ‚Π΅ΠΌ аппроксимировали ΠΏΡƒΠ·Ρ‹Ρ€ΠΈ эллипсами ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ряд Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… состояниС ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ смСси Π² Π±ΠΎΡ‡ΠΊΠ΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

static-features

2) Π”ΠΈΠ½Π°ΠΌΠΈΠΊΠ°: скорости ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ² ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой части Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ использовали SIFT-дСскрипторы ΠΈ особыС Ρ‚ΠΎΡ‡ΠΊΠΈ, Π·Π°Ρ‚Π΅ΠΌ слоТным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ сматчили особыС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ собой (ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ число Π»ΠΎΠΆΠ½ΠΎΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… срабатываний Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π°), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ сдвиги ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ, ΠΊΠ°ΠΊ с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ скорости ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΉ Π² ΠΏΠ΅Π½Π΅. Π•Ρ‰Π΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ двиТСтся ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΉ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой части Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅:

dynamic-features

Π¦Π²Π΅Ρ‚Π½Ρ‹ΠΌΠΈ линиями ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ смСщСния сопоставлСнных ΠΏΠ°Ρ€ особых Ρ‚ΠΎΡ‡Π΅ΠΊ SIFT, Ρ†Π²Π΅Ρ‚ Π»ΠΈΠ½ΠΈΠΈ зависит ΠΎΡ‚ направлСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ двиТСтся ΠΏΡƒΠ·Ρ‹Ρ€ΡŒ (Π² качСствС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π±Ρ€Π°Π»ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ с шагом 45 градусов).

Where am I? What is this?

Here you can find our team solution for Nornickel's hackathon 2nd task. The goal was to augment froth flotation process, to make it more controllable.

Input

As an input we had 56 1-minute recordings with froth flotation. No annotation was provided.

Output

We've used bunch of classical CV methods: from constant thresholding to SIFT descriptors, from import cv2 to home-made algorithms to suppress false-positives.

1) Static

To measure properties of bubbles in froth, we've used combination of constant thresholding and Sobel filter, after that we've implemented custom algorithm to find circumscribing ellipse for the bubble (if it is possible).

2) Dynamic

To extract speed we've implemented simplified version of algorithm which was given at [2]. We've extracted SIFT keypoints and descriptors, after that we've matched keypoints at each pair of video frames and used this to compute keypoints "pseudo-speeds".

References

[2]: Jinping LIU, Weihua GUI, Zhaohui TANG: Flow velocity measurement and analysis based on froth image SIFT features and Kalman filter for froth flotation. Turk J Elec Eng & Comp Sci, (2013) 21: 2378 – 2396. doi:10.3906/elk-1204-91