Sešívání dílčích obrazů rekonstruovat původní obraz

0

Otázka

Předpokládejme, že máme obraz, který rozdělena do 4 dílčích snímků vertikálně. Po rozdělení jsme shuffle sub obrázky. Jak mohu získat původní obrázek z dílčích snímků? NEBO, jak můžeme správně třídit dílčí obrázky, aby si původní ani nevíme pořadí? enter image description here

enter image description here

(Edit) Řešení: rozpoznat přechod bodů jako první můžete zkontrolovat pixel rozdíl na ose X. Po získání přechodové body, můžete rozdělit obraz do dílčích snímků. Nyní, můžete porovnat a seřadit správně pixelů a pixelů doleva jednotlivých dílčích obrázků.

2

Nejlepší odpověď

0

Podle toho, jak si rozdělit své image, jedním z řešení je úspora původní index/umístění s obrazem v n-tice. Jakmile se zamíchají, pak můžete třídit seznam obrázků založené mimo tento index se dostal zpět na původní příkaz. Pak použijte hconcat sešijte je dohromady.

import cv2
img = cv2.imread('img.png')
img_list = []
# split image in half
img_B = img_list.append((1, img[:, img.shape[1]//2:]))
img_A = img_list.append((0, img[:, :img.shape[1]//2]))
# img_list is in order 1, 0
sorted_list = sorted(img_list, key=lambda x: x[0])
# sorted to correct order of 0, 1

result = cv2.hconcat([sorted_list[0][1], sorted_list[1][1]])  
2021-11-23 08:39:11

Předpokládejme, že neznáte pořadí.
dasmehdix

@dasmehdix se to zdá nemožné, pokud nemáte tušení, o řádu... budete mít, aby odpovídaly vlastnosti v obrazech nějak, možná přidat překrytí pro opravy.
DNy
-1

Za předpokladu, že víte, pořadí obrázku rozdělí, můžete připojit se k nim zpět pomocí hconcat()

# horizontally concatenates images
# of same height 
im_h = cv2.hconcat([imgA, imgB])    

# show the output image
cv2.imshow('man_image.jpeg', im_h)
2021-11-23 08:12:42

Co chci říct je, jak můžeme řadit tyto rozdělí správně? Nežádám o concatting sub-obrazy
dasmehdix

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................