2012-04-16 15 views
5

SimpleCVを使用して画像を縫い合わせています。私はSimpleCVのGitHubコードにいくつかの変更を加え、最終的に画像を正しく変換しました。しかし、問題は、変換後の画像の色が変わってしまうことです。画像の縫い合わせSimpleCV:ワープ後の色空間の変更

私はこれらの画像を使用していますhttp://imgur.com/a/lrGw4。私のコードの出力は次のとおりです。http://i.imgur.com/2J722h.jpg

これは私のコードです:

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") 

答えて

3

あなたがSimpleCVの古いリビジョンを使用しているようです。最新バージョンではホモグラフィ行列を取得する方法は、[1]です:

ofimg[0].getHomography() 

編集:

あなたが言及している色の問題は、色空間の変化に起因しているようです。

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

私はSimpleCVはデフォルトでRGBの色空間を使用しながら、ワーピング後の返送画像はBGRの色空間であるということです何が起こっているのか疑う:だからあなたがイメージをワープラインを変更してください。それがどうなるか教えてください。

+0

私はgithubのSimpleCVの最新バージョンを使用しています。 SimpleCVのコードを少し変更したので、私はそれを好きでした。その前にホモグラフィ行列自体が間違っていた。しかし、画像は完全に変換されますが、変換された画像の色は変化します。 findkeypointMatch関数で私はいくつかのコードを変更しました。ここで私が行った変更はhttps://github.com/ingenuitas/SimpleCV/pull/63/filesです。しかし、色の問題は以前もありました。 – Rishi

+0

私は答えを編集しました。私はあなたのコードを正確に実行することはできませんが、同様のスクリプトを書いて、その問題が反転色空間であることを発見しました。 – fireant

+0

awesome .. :)あなたのロジックは完璧に機能しました。 :)。ありがとうございました。 – Rishi

関連する問題