eGospodarka.pl

eGospodarka.plGrupypl.comp.programming › Odczyt ciśnienia - analiza obrazu
Ilość wypowiedzi w tym wątku: 28

  • 1. Data: 2020-10-21 10:29:24
    Temat: Odczyt ciśnienia - analiza obrazu
    Od: heby <h...@p...onet.pl>

    Cześć.

    Jest takie coś:

    https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkH
    eubBNSpJPAS5F/view?usp=sharing

    Zdjęcie jest zrobione normalnym aparatem, docelowo będzie to nagrywane
    gorszej jakosci kamerą, więc kontrast i szumy będa inne, odczyt będzie
    też w nocy (podświetlowny z boku) więc cienie też będą inne.

    Wiem, że zawsze orientacja obrazu będzie taka jak widać, czyli połowa
    zakresu, wskazówka w pionie. Kamerę mam pod kontrolą.

    Zadanie:

    Mając do dyspozycji niewielką moc obliczeniową (~-pi) zanalizować obraz
    i odczytać położenie wskazówki na tarczy dostając liczbę 0-max.

    To nie jest krytyczne, wiec jesli raz na jakiś czas będzie bład to nie
    złego się nie stanie.

    Po drugie, to nie jest real-time. Jeśli odczytam położenie raz na
    kilkanaście sekund, będzie ok.

    Najwygodniej będzie mi uzyć OpenCV + python bo mam w tym jakieś
    doświadczenia.

    Teraz:
    Mam jakieś pomysły jak to zrealizować za pomocą kilku algorytmów, ale
    całośc rozbija się o to, że warunki w których to robię, będą zmienne.
    Zarówno oświetlenie jak i "zaparowanie" górnej częsci wyświetlacza będą
    zależały od pogody.

    Coś czuje że bez sprytniejszych algorytmów daleko nie zajadę.

    Opcja czołgowa: generować sztuczny obraz czyjnika bez wskazówki,
    metodami porównywania obrazu dopasować go idealnie do klatki z kamery,
    wklejać wskazówkę co kilka stopni i sprawdać która z takich wklejonych
    wskazówek splecie się najlepiej z obrazem. Tylko że to czasochłonne.

    Opcja sensowna: algorytm potrafiący określić od razu kąt pod którym
    widać wskazówkę, np. po wykasowaniu pierścienia i tarcz (tarcze pewnie
    załatwi prosta binaryzacjia + erozja). Jakieś propozycje na odczyt kąta
    pod którym jest wskazówka?

    Może ktoś widział podobne zagadnienie w postaci publikacji gdzie mógłbym
    zerknąć choćby na hasłowe algorytmy?

    PS. Nie, nie da się podłaczyć czujnika innego niż ten ;) Z przyczyn
    pozatechnicznych.

    PS2. To nie zaliczenie, to konkretny problem ad-hoc z domu ...


  • 2. Data: 2020-10-21 10:50:10
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: heby <h...@p...onet.pl>

    On 21/10/2020 10:29, heby wrote:
    > Cześć.

    I jeszcze jedno: tak wiem że są "gotowce" na sieci, nawet kilka
    obejrzałem, zwyczajowo sprawadzaja się do binaryzacji i użycia na tym
    transformaty Hougha. Ale może ktoś ma jakiś inny pomysł, nie wykluczam
    że fajnie by było usłyszeć o AI.


  • 3. Data: 2020-10-21 21:44:43
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: Maciej Sobczak <s...@g...com>

    > Jest takie coś:
    >
    > https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkH
    eubBNSpJPAS5F/view?usp=sharing

    Wolfram:

    img = Import["cisnieniomierz.jpg"];
    img2 = ImageTake[
    ImageResize[ImageMultiply[img, 5], 500], {76, -39}, {86, -82}];

    img2 to rozjaśniony, wycentrowany (na oś wskazówki, wartości dobrane) i pomniejszony
    obraz ciśnieniomierza.

    mask = Rasterize[
    Graphics[{Disk[{0, 0}, 1.1], White, Disk[{0, 0}, 1]},
    PlotRange -> {{-1.75, 1.75}, {-1.75, 1.75}}],
    RasterSize -> ImageDimensions[img2]];

    mask to maska, która wycina pierścień tam, gdzie jest czerwone pole (tam jest tylko
    czarna wskazówka na czerwonym, więc nic innego nie przeszkadza).

    img3 = ImageMultiply[img2, ColorNegate[mask]];
    img4 = ImageAdd[img3, mask];

    img4 to wycięte czerwone pole z kawałkiem czarnej wskazówki, reszta jest całkiem
    biała.

    blacks = PixelValuePositions[img4, Black, 0.15];

    blacks to lista pozycji czarnych (lub prawie czarnych, tolerancja dobrana) pikseli.
    Jest ich w sumie 7.

    Map[
    Function[p,
    N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree
    ],
    blacks
    ] // Median

    7.81529

    I tyle właśnie, w stopniach, jest odchylona wskazówka od poziomu.

    Można też porobić dużo zdjęć wzorcowych i porównywać korelacją albo jakimiś sieciami,
    ale samą arytmetyką jest dużo taniej. Da się to zrobić w dowolnym innym języku.

    (BTW - Google twierdzi, że w tym kodzie są adresy mailowe. Dobre.)

    --
    Maciej Sobczak * http://www.inspirel.com


  • 4. Data: 2020-10-21 22:03:22
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: heby <h...@p...onet.pl>

    On 21/10/2020 21:44, Maciej Sobczak wrote:
    >> https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkH
    eubBNSpJPAS5F/view?usp=sharing
    > Wolfram:

    Niestety ciezko go wdrożyć, troche jak matlab, dobry do prezentacji na
    konferencji i reszte rób se sam ;)

    > Map[
    > Function[p,
    > N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree
    > ],
    > blacks
    > ] // Median
    >
    > 7.81529
    >
    > I tyle właśnie, w stopniach, jest odchylona wskazówka od poziomu.

    Co to w zasadzie robi? Wcześniejsze funkcje to tylko prosta obróbka
    obrazu, ale tutaj troche niejasne, nie znam składni Wolframa. Tylko
    arctang liczysz z pixeli? Co to za mapa?

    > Można też porobić dużo zdjęć wzorcowych i porównywać korelacją albo jakimiś
    sieciami, ale samą arytmetyką jest dużo taniej.

    Obawiam się że nie zadziała jak tylko zmienią się warunki oświetlenia.
    Obecnie projektuje podstawkę pod kamerę, trzeba to jeszcze wydrukować i
    będę miał pełny zakres oświetlenia po 1 dobie, więc grybam sobie jak to
    będzie wygladać, ale raczej będzie oświetlenie nocne i może część detali
    zmieni kompletnie wygląd.

    Robiłem kilka analiz tego typu róznymi metodami i zazwyczaj proste
    liczenie pixeli wybija sobie zęby o pierwszą muchę na obrazie, słabo się
    sprawdzą jak pojawią się odbicia, cienie, szum. Szukam czegoś bardziej,
    bo ja wiem, statystycznego. Transformata Hougha jest tutaj praktycznie
    oczywistym rozwiązaniem, ale o ile wiem jest bardzo cieżka obliczeniowo
    (masa latania po obrazie i kręcenia prostą sumując pixele). Ale może się
    mylę i z tej prostej metody wynika jednak jakaś optymalizacja stosowana
    w opencv?

    Obecnie szyje sobie na boku własnie coś oparte o Hougha, czuje jednak że
    można prościej, np. można zrobić splot ze sztuczną wskazówką, bo środek
    tarczy jestem w stanie łatwo znaleźć i ją sobie narysować. W tedy z
    Hougha zostanie tylko 1 punkt z nieznanym "fi" co znacząco zmniejszy
    ilośc liczenia. Albo nie mam racji i nie warto tak optymalizować.

    > Da się to zrobić w dowolnym innym języku.

    Wiadomo.


  • 5. Data: 2020-10-22 00:07:26
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: Maciej Sobczak <s...@g...com>

    > > Wolfram:
    >
    > Niestety ciezko go wdrożyć,

    Na RaspberryPi jest już wdrożony. Akurat do gapienia się na ciśnieniomierz w piwnicy.

    > > Map[
    > > Function[p,
    > > N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree
    > > ],
    > > blacks
    > > ] // Median

    > Co to w zasadzie robi? Wcześniejsze funkcje to tylko prosta obróbka
    > obrazu, ale tutaj troche niejasne, nie znam składni Wolframa. Tylko
    > arctang liczysz z pixeli? Co to za mapa?

    Z wcześniejszych obliczeń, blacks to lista pozycji czarnych punktów, np. taka
    (powiedzmy, że są 3 punkty obok siebie):

    {{42,65},{43,65},{43,66}}

    Powiedzmy, że obrazek ma 200x200, więc środek ma w punkcie {100,100}. Taką wartość
    dostajemy z ImageDimensions[img2]/2.
    Trzeba znaleźć wektor ze środka obrazka (bo wcześniejsze obliczenia były po to, żeby
    środek obrazka był w osi wskazówki) do tych czarnych punktów - to robi odejmowanie (p
    - ImageDimensions[img2]/2), jeśli p jest jednym z punktów z listy. Dalej liczymy
    normalnie ArcTan[y/x] tego wektora, ale skoro mamy {x,y}, to trzeba odwrócić
    kolejność (Reverse) i zamienić parę na dzielenie (Divide). Wynik chcemy w stopniach -
    dzielimy przez Degree, co jest stałą oznaczajacą ilość radianów w stopniu. Mapa robi
    to wszystko dla każdego punktu z listy. Na sam koniec (notacja post-fix) jest
    wybierany środkowy wynik, na wypadek gdyby trafiła się jakaś "mucha" gdzieś.
    Można się jeszcze zastanowić, w którym kwadrancie są te punkty, bo to wpływa na znak
    kąta.

    > Robiłem kilka analiz tego typu róznymi metodami i zazwyczaj proste
    > liczenie pixeli wybija sobie zęby o pierwszą muchę

    Właśnie nie. Można nawet przyjąć jakąś oczekiwaną liczbę pikseli z tej analizy. Jak
    jest ich za dużo, to masz muchę i odrzucasz pomiar. Jak jest ich tyle, co trzeba, to
    jest ok (albo się urwała wskazówka i jest mucha udająca wskazówkę - ale takiego
    sabotażu niczym się nie obsłuży).

    > Transformata [...]

    Szkoda liczenia.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 6. Data: 2020-10-22 08:55:02
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: Andrzej S <a...@e...pl>

    W dniu 2020-10-21 10:29, heby pisze:
    > Cześć.
    >
    > Jest takie coś:
    >
    > https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkH
    eubBNSpJPAS5F/view?usp=sharing
    >

    1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka).
    Grubość wskazówki mówi ile ich powinno być.

    2. Wzdłuż każdego odcinka policz sumę RGB.

    3. Wskazówka to ten odcinek, dla którego suma jest minimalna.

    pozdro
    --
    A S


  • 7. Data: 2020-10-22 09:19:34
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: heby <h...@p...onet.pl>

    On 22/10/2020 08:55, Andrzej S wrote:
    > 1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka).
    > Grubość wskazówki mówi ile ich powinno być.
    > 2. Wzdłuż każdego odcinka policz sumę RGB.
    > 3. Wskazówka to ten odcinek, dla którego suma jest minimalna.

    To własnie uproszczona transformata Hougha. Bede to m.in. próbował jak
    ogarnę mechaniczne mocowanie, ale najpierw pójdzie uproszczony algorytm
    od Maćka.


  • 8. Data: 2020-10-22 18:29:01
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: Maciej Sobczak <s...@g...com>


    > 1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka).
    > Grubość wskazówki mówi ile ich powinno być.

    Dobry pomysł, ale odcinki powinny mieć taką samą długość, bo inaczej odległość do
    brzegu będzie mieć wpływ na sumę. W sensie - niech to będzie "do brzegu", ale np.
    tarczy, a nie całego obrazka.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 9. Data: 2020-10-22 19:52:51
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: Roman Tyczka <r...@h...you.spammer>

    W dniu 21.10.2020 o 10:29, heby pisze:
    > PS. Nie, nie da się podłaczyć czujnika innego niż ten ;) Z przyczyn
    > pozatechnicznych.
    >
    > PS2. To nie zaliczenie, to konkretny problem ad-hoc z domu ...

    A może wybić szybkę, pomalować wskazówkę mocno odblaskowym lakierem i
    robić fotę z drobnym oświetleniem?
    Wtedy wskazówka będzie "świecić" i łatwo ją będzie zlokalizować.

    --
    pzdr
    Roman


  • 10. Data: 2020-10-22 22:16:22
    Temat: Re: Odczyt ciśnienia - analiza obrazu
    Od: heby <h...@p...onet.pl>

    On 22/10/2020 19:52, Roman Tyczka wrote:
    > A może wybić szybkę, pomalować wskazówkę mocno odblaskowym lakierem i
    > robić fotę z drobnym oświetleniem?

    Za 5 lat. Po gwarancji ...

    > Wtedy wskazówka będzie "świecić" i łatwo ją będzie zlokalizować.

    A jak by jeszcze do niej przymocować mały enkoder ... Wiesz, jak bym
    mógl pozbyć się tego manometru i wstawić czujnik elektroniczny to by w
    ogóle tematu nie było ...

    Na razie w grę wchodzą metody bezinwazyjne, kiedyś, w przyszłosci, będa
    metody sensowne.

    PS. Znalazłm wiele lat temu rozwiązanie podobnego problemu za pomocą
    kilku cewek wykrywajacych zmianę inducyjności gdy pod nimi była
    wskazówka. Autor narzekał, że całośc rozkalibrowuje się co chwile.

    PS2. A całkiem serio to pomyślałem że to taka zabawa. Wiedza o ciśnieniu
    jest mi prawie niepotrzebna, ale chciałem sobie poćwiczyć pythona i
    opencv. To czemu nie skorzystać z okazji i zrobic coś użytecznego.

strony : [ 1 ] . 2 . 3



Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: