У меня есть изображение с двумя дубликатами в нем. Я вырезал изображение пополам вертикально и нуждается в соответствии с изображениями при наложении Pixel Pixel. Я использую CV2.findTransformecc в Python, чтобы найти матрицу варп, чтобы преобразовать верхнюю половину, чтобы соответствовать нижней половине. Я подумал, что, может быть, я мог бы сказать это, с чего начать с преобразования с матрицей деформации догадки (как я могу видеть по глазу, что первая половина должна быть переведена в направлении Y Работайте над совершенствованием. Это сработало отлично. Поэтому я хотел бы иметь одну последнюю матрицу варп, которая может быть передана. Я прочитал в других ответах, что для объединения двух преобразований деформации я должен добавить третий ряд матрицы идентификации в каждый, а затем сделать умножение матрицы. Я сделал это (умножение как AB, так и BA на всякий случай), но, похоже, это не работает. то есть окончательная матрица делает и не дает тот же результат, что и применение двух матриц варп, одна за другой. < /p>
Это код, который я использую: < /p>
import imageio.v2 as imageio
import numpy as np
from matplotlib import pyplot as plt
from scipy import ndimage
import cv2
from PIL import Image
def image_parameters(ecc_iter, ecc_crit):
# generate a sample image
image_path = cv2.samples.findFile("lena.jpg")
image = cv2.imread(image_path)
# mess up the image
in_warp = [[0.6, 0.07, -13.5], [0.04, 0.96, 20]]
Image_distorted = cv2.warpAffine(image, warp_matrix, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
# bring image closer with a guess warp matrix
guess_warp = [[0.04, 0.01, 10], [0, 0, -20]]
Image1 = cv2.warpAffine(image_distorted, guess_warp, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
# Initialize the warp matrix (affine transformation)
warp_matrix = np.eye(2, 3, dtype=np.float32)
# Define criteria for the ECC algorithm
criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, ecc_iter, ecc_crit)
# Compute the transformation matrix, first argument is template, second is image that will be transformed
(cc, warp_matrix) = cv2.findTransformECC(image, image1, warp_matrix, cv2.MOTION_AFFINE, criteria)
# Apply the affine transformation
aligned_image1 = cv2.warpAffine(image1, warp_matrix, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
#compare overlap before and after transform
pre_diff = Image_distorted + image
post_diff = aligned_image1 + image
plt.imshow(pre_diff)
plt.imshow(post_diff)
plt.show()
a = [0, 0, 1]
final_warp = np.vstack([warp_matrix, a]) @ np.vstack([guess_matrix, a])
return final_warp
(warp_matrix) = image_parameters(4000, 1e-10)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-the-war
Как я могу дать cv2.findtransformECC первоначальное предположение, чтобы ускорить поиск матрицы деформации? ⇐ Python
Программы на Python
1737971047
Anonymous
У меня есть изображение с двумя дубликатами в нем. Я вырезал изображение пополам вертикально и нуждается в соответствии с изображениями при наложении Pixel Pixel. Я использую CV2.findTransformecc в Python, чтобы найти матрицу варп, чтобы преобразовать верхнюю половину, чтобы соответствовать нижней половине. Я подумал, что, может быть, я мог бы сказать это, с чего начать с преобразования с матрицей деформации догадки (как я могу видеть по глазу, что первая половина должна быть переведена в направлении Y Работайте над совершенствованием. Это сработало отлично. Поэтому я хотел бы иметь одну последнюю матрицу варп, которая может быть передана. Я прочитал в других ответах, что для объединения двух преобразований деформации я должен добавить третий ряд матрицы идентификации в каждый, а затем сделать умножение матрицы. Я сделал это (умножение как AB, так и BA на всякий случай), но, похоже, это не работает. то есть окончательная матрица делает и не дает тот же результат, что и применение двух матриц варп, одна за другой. < /p>
Это код, который я использую: < /p>
import imageio.v2 as imageio
import numpy as np
from matplotlib import pyplot as plt
from scipy import ndimage
import cv2
from PIL import Image
def image_parameters(ecc_iter, ecc_crit):
# generate a sample image
image_path = cv2.samples.findFile("lena.jpg")
image = cv2.imread(image_path)
# mess up the image
in_warp = [[0.6, 0.07, -13.5], [0.04, 0.96, 20]]
Image_distorted = cv2.warpAffine(image, warp_matrix, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
# bring image closer with a guess warp matrix
guess_warp = [[0.04, 0.01, 10], [0, 0, -20]]
Image1 = cv2.warpAffine(image_distorted, guess_warp, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
# Initialize the warp matrix (affine transformation)
warp_matrix = np.eye(2, 3, dtype=np.float32)
# Define criteria for the ECC algorithm
criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, ecc_iter, ecc_crit)
# Compute the transformation matrix, first argument is template, second is image that will be transformed
(cc, warp_matrix) = cv2.findTransformECC(image, image1, warp_matrix, cv2.MOTION_AFFINE, criteria)
# Apply the affine transformation
aligned_image1 = cv2.warpAffine(image1, warp_matrix, (image.shape[1], image.shape[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)
#compare overlap before and after transform
pre_diff = Image_distorted + image
post_diff = aligned_image1 + image
plt.imshow(pre_diff)
plt.imshow(post_diff)
plt.show()
a = [0, 0, 1]
final_warp = np.vstack([warp_matrix, a]) @ np.vstack([guess_matrix, a])
return final_warp
(warp_matrix) = image_parameters(4000, 1e-10)
Подробнее здесь: [url]https://stackoverflow.com/questions/79384809/how-can-i-give-cv2-findtransformecc-an-initial-guess-to-speed-up-finding-the-war[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия