2015-06-22 18 views
7

Omówienie:Jak mogę zamienić biały prostokąt w obrazie za pomocą ImageMagick?

Pierwsze zdjęcie to moje oryginalne zdjęcie. Tutaj chcę zamienić biały prostokąt pokazany na innym obrazie.

enter image description here

Moje podejście:

Stworzyłem obraz maski za pomocą floodfill i wygląda to tak:

enter image description here

Problem:

Teraz chciałbym uzyskać odległość lub współrzędne prostokąta w drugim obrazie, aby móc użyć tych współrzędnych, aby nadpisać nowy obraz na pierwszym (oryginalnym obrazie) tutaj.

Mam mały pomysł, aby użyć operatora morfologicznego ImageMagick'a chebyshev, ale nie wiem, jak to zrobić.

+0

Spróbuj 'przekonwertować image.jpg -threshold 90% result.jpg' –

+0

Albo' przekonwertować image.jpg -threshold 90% -canny 0x1 + 10% + 30% result.jpg' –

+0

Witaj Mark. ..Dziękuję za odpowiedź. ale chcę tutaj uzyskać współrzędne, kąt obrotu, szerokość i wysokość prostokąta, aby pokryć się z innym obrazem. Proszę zobaczyć moje inne pytanie tutaj, aby uzyskać pomysł, co próbuję osiągnąć. http://stackoverflow.com/questions/30971894/replacing-detected-object-in-a-frame-w--image-image-imageprocessing Mam nadzieję, że idę we właściwy sposób. Jeśli nie, poprowadź mnie. Obecnie podążam tą drogą: http://www.imagemagick.org/discourse-server/viewtopic.php?t=20269 –

Odpowiedz

6

myślę, że można zlokalizować kształt dość dokładnie z prostego progu, tak:

convert image.jpg -threshold 90% result.jpg 

enter image description here

i można wtedy zrobić canny takiego:

convert image.jpg -threshold 90% -canny 0x1+10%+30% result.jpg 

enter image description here

Następny rzeczy chciałbym być patrząc na to, używając funkcji -trim znaleźć współrzędne skrzynki wykończenia, tak:

convert result.jpg -format "%@" info: 
320x248+152+40 

że mam zaznaczone na czerwono poniżej.

enter image description here

Jeśli rzeczywiście chcesz zrobić wykładzinę, użyj tego:

convert result.jpg -trim result.jpg 

enter image description here

a także, kąt prostowanie

convert result.jpg -deskew 40 -format "%[deskew:angle]" info: 
-0.111906 

Hough wykrywania linia może również być dla Ciebie skuteczny:

convert image.jpg -threshold 90% -canny 0x1+10%+30%  \ 
    \(+clone -background none       \ 
       -fill red -stroke red -strokewidth 2  \ 
       -hough-lines 5x5+80 -write lines.mvg  \ 
    \) -composite hough.png 

enter image description here

a plik lines.mvg zawiera 4 linie szukasz

# Hough line transform: 5x5+80 
viewbox 0 0 640 360 
line 449.259,0 474.432,360 # 90 
line 0,72.5604 640,27.8072 # 143 
line 0,293.098 640,248.344 # 187 
line 153.538,0 178.712,360 # 153 

jest trochę leniwy, nie czułem się jak rozwiązywanie przecięcia tych linii, więc pomyślałem, że pozwolę sobie na to również w ImageMagick - używając Morfologii, aby szukać Linii Kolejowych w następujący sposób:

convert image.jpg -threshold 90% -canny 0x1+10%+30%      \ 
    \(+clone -background none -fill red -stroke red -hough-lines 5x5+80 \) \ 
    -composite -fuzz 50% -fill black -opaque white      \ 
    -morphology HMT LineJunctions hough.png 

enter image description here

+0

dzięki za wysiłek. Wypróbuję, jak tylko uaktualnię swój imagemagick do 6.9. Mam 6.7, a więc nie mogłem użyć - mimo, że obsługuje od 6,8 ​​i myślę, że –

+0

Doskonała odpowiedź, Mark! :-) –

+0

Świetna robota ... wielkie dzięki. Mark –

Powiązane problemy