Bezpośrednia konwersja pikseli do milimetrów?

0

Znalazłem punkt w obrazie zczytanym z kamery, posiadam X i Y w pikselach tego punktu.
Mam dane internal i external kamery

Mam pytanie odnośnie tego czy mogę bezpośrednio przekonwertować dane z pikseli na milimetry czy przeszkadza w tym matryca/obiektyw?
Potrzebuje wyrzucić położenie tego punktu względem światowego układu współrzędnych, ma ktoś jakiś pomysł?

0

Co miałyby te milimetry reprezentować - położenie piksela na fizycznej matrycy aparatu?

0

docelowo chce podać dokładne miejsce innej maszynie by końcówka narzędzia tam dojechała
maszyna ma swój układ x y z u v w
kamera ma swój x y z u v w

piksel np. daje mi dane x y
biorę pod uwagę focal lenght, kappe (rybie oko itd.)
czy mogę zamienić np. roździelność 1936x1216 na mm czy tak się nie da

mam pytanie czy tak 1 do 1 da się zamienić piksele na mm, czy może jest inna droga,
nie jestem specjalistą w tej dziedzinie, jeśli ktoś wie o co chodzi, poprosiłbym o wskazówki,
lub odnośniki do innych stron

0

Raz jeszcze, powoli.

Co te milimetry miałyby reprezentować?

  • położenie obiektu w przestrzeni (relatywnie do kamery na przykład)
  • położenie piksela na matrycy
  • ??
1
Michał Parzych napisał(a):

docelowo chce podać dokładne miejsce innej maszynie by końcówka narzędzia tam dojechała
maszyna ma swój układ x y z u v w
kamera ma swój x y z u v w

piksel np. daje mi dane x y
biorę pod uwagę focal lenght, kappe (rybie oko itd.)
czy mogę zamienić np. roździelność 1936x1216 na mm czy tak się nie da

mam pytanie czy tak 1 do 1 da się zamienić piksele na mm, czy może jest inna droga,
nie jestem specjalistą w tej dziedzinie, jeśli ktoś wie o co chodzi, poprosiłbym o wskazówki,
lub odnośniki do innych stron

Jeśli masz wszystkie kalibracje kamery to jesteś w stanie wyznaczyć jedynie promień, który biegnie od ogniska do szukanego przez Ciebie punktu. Jeśli posiadasz jednak informację o odległości tego punktu od płaszczyzny matrycy, to możesz wyznaczyć ten punkt. Jeśli nie, potrzebujesz przynajmniej drugiego zdjęcia z tym samym punktem z innej pozycji - wtedy możesz przeprowadzić 2 proste. Nie ma pewności, że się przetną, to jest generalnie nieco bardziej skomplikowany problem, który rozwiązuje się lokalizując ten sam punkt na wielu zdjęciach i stosując tzw. Bundle Adjustment. Na pociechę, jest to wszystko w OpenCV (sprawdź metodę solvePnP).

0

masz rozmiar zdjęcia x na y pikseli. Masz rozmiar obszaru roboczego tajemniczego urządzenia z na v mm. 1 mm w pionie = x / z pixeli, 1 mm w poziomie = y / v pixeli i dla pixeli analogicznie

0

Pytanie na ile zobrazowanie z kamery spełnia warunki ortophoto, bo być może trzeba poprawić dokładność poprzez ortorektyfikację. Najprościej będzie wydrukować wzorzec siatki (np. co 1 cm), podłożyć pod kamerę i ewentualnie zdecydować, czy dokładność jest wystarczająca, czy też konieczne jest zastosowanie którejś z metod ortorektyfikacji. Należy pamiętać, że przeliczniki jakie otrzymasz będą prawidłowe tylko dla danej odległości od kamery. Wystarczy położyć coś grubszego i trzeba ustalać przeliczniki na nowo.

0
Patryk27 napisał(a):

Raz jeszcze, powoli.

Co te milimetry miałyby reprezentować?

  • położenie obiektu w przestrzeni (relatywnie do kamery na przykład)
  • położenie piksela na matrycy
  • ??

położenie piksela na matrycy <- Myślałem właśnie o tym zakładając temat
Z dokumentacji posiadam dane:
Kamera: area-scan camera (division)

  • Resolution: 1936-x1216
  • Pixel size: 5.86umx5.86um
    Obiektyw:
  • Focal length: 8mm
  • Angle of view (H x V) 58.4°×44.6°
  • TV distortion (%): -2 | w programie mam opisaną kappe jako 'Divisional distortion coefficient kappa' i po kalibracji ustawia mi się na wartość -2000 w 1/ m2 (wie ktoś więcej na ten temat to poproszę informacje)

Po tym wnioskuje teraz, że nie ma linearnej zależności pomiędzy pikselem a obrazem a miarą w 'mm'/'cm' etc.

Mam plik pozycji do ustawienia
Translacja X = 0
Translacja Y = 0
Translacja Z (odległość od matrycy?)
Rot X = 360
Rot Y = 360
Rot Z = 180

i teraz myślę o położenie obiektu w przestrzeni x,y,z,u,v,w zczytanym z kamery, która się porusza drogą prostej ścieżce, więc położenie byłoby uzależnione od kamery..

1

Zasadniczo są dwie metody znajdowania tej transformacji:

  1. Oparta na parametrach urządzenia obrazującego (na postawie zamieszczonych danych - Twój przypadek).
  2. Oparta na kolekcji punktów w parach (punkt z przestrzeni rzeczywistej i punkt na zobrazowaniu).

Skoro masz program znajdujący transformację w oparciu o parametry urządzenia obrazującego, to po wprowadzeniu danych pozostaje jeszcze etap kalibracji, czyli masz jakiś wzorzec i sprawdzasz jego obraz w kamerze. Jeśli dokładność nie jest wystarczająca, albo masz jakieś zniekształcenia (poduszki, beczki, zniekształcenia cylindryczne, trapezowe), to próbujesz korygować parametry (np. dla trapezowych może to być Rot X lub Rot Y). Jeśli chodzi o Translacja Z, to odpowiedzi szukaj w instrukcji. Może być do matrycy, może być do ogniska lub innego miejsca - łatwiejszego do pomiaru. We wzorach najczęściej używa się odległości od ogniska.

1
Michał Parzych napisał(a):

docelowo chce podać dokładne miejsce innej maszynie by końcówka narzędzia tam dojechała
maszyna ma swój układ x y z u v w
kamera ma swój x y z u v w

Mieszkasz w przestrzeni sześciowymiarowej?
Czym dokładnie są te uvw?

Może opisz dokładniej jak wyglądają te ruchy i ile faktycznie wymiarów czy też stopni swobody potrzebujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1