2012-04-16 14 views
5

Używam SimpleCV do łączenia zdjęć. Wprowadziłem kilka zmian w kodzie GitHub SimpleCV i ostatecznie otrzymałem poprawiony obraz. Problem polega jednak na tym, że zmienia się kolor obrazu po transformacji.Szycie obrazu SimpleCV: zmiana przestrzeni kolorów po zniekształceniu

Użyłem tych zdjęć http://imgur.com/a/lrGw4. Wyjście z mojego kodu jest: http://i.imgur.com/2J722h.jpg

To jest mój kod:

from SimpleCV import * 
import cv2 
import cv 

img1 = Image("s.jpg") 
img2 = Image("t.jpg") 

dst = Image((2000, 1600)) 

# Find the keypoints. 
ofimg = img1.findKeypointMatch(img2) 

# The homography matrix. 
homo = ofimg[1] 
eh = dst.getMatrix() 

# transform the image. 
x = Image(cv2.warpPerspective(np.array((img2.getMatrix())), homo, 
    (eh.rows, eh.cols+300), np.array(eh), cv.INTER_CUBIC)) 

# blit the img1 now on coordinate (0, 0). 
x = x.blit(img1, alpha=0.4) 
x.save("rishi1.jpg") 

Odpowiedz

3

Wydaje używasz stara wersja SimpleCV. W najnowszej wersji sposób, aby uzyskać macierz homography jest [1]:

ofimg[0].getHomography() 

Edit:

Wydaje problem koloru jesteś wspomnieć, ze względu na zmiany zachodzące w przestrzeni barw. Więc proszę zmienić linię ty Warp obraz do:

x = Image(cv2.warpPerspective(np.array((img2.getMatrix())), homo, 
    (eh.rows, eh.cols+300), np.array(eh), cv.INTER_CUBIC), colorSpace=ColorSpace.RGB).toBGR() 

Podejrzewam, co się dzieje jest to, że wrócił po wypaczenia obrazu w przestrzeni barw BGR podczas SimpleCV domyślnie wykorzystuje przestrzeń kolorów RGB. Daj mi znać, jak to działa.

+0

Używam najnowszej wersji SimpleCV z github. Zrobiłem to w ten sposób, ponieważ dokonałem pewnych zmian w kodzie SimpleCV. Wcześniej sama matryca homografii była błędna. Ale teraz obraz jest idealnie przekształcony, ale zmienia się kolor przekształconego obrazu. W funkcji findkeypointMatch zmieniłem kod. Oto zmiana, którą wykonałem https://github.com/ingenuitas/SimpleCV/pull/63/files. Ale problem koloru był także wcześniej. – Rishi

+0

Edytowałem odpowiedź. Nie mogę uruchomić dokładnie kodu, ale napisałem podobny skrypt i okazało się, że problem dotyczy odwróconej przestrzeni kolorów. – fireant

+0

niesamowite .. :). Twoja logika działała bezbłędnie. :). Dziękuję Ci. – Rishi