В настоящее время я работаю над улучшением наложения части изображения мозаика пример приложения на домашней странице VLfeat.На этом последнем этапе blending я хочу объединить два не наноразмерных изображения, каждое из которых будет получено из интерполяции двух изображений с использованием interp2
с nan
-flag.В частности, учитывая две матрицы изображения A
и B
и смешанную матрицу C
одинакового размера M
-by- N
, я хочу для каждой позиции матрицы (i
, j
) в A
и B
хотят проверить, *
- , оба
A
и B
имеют определенное значение в (i,j)
, поэтому C(i,j)
среднее из них или - либо
A
или B
имеют определенное (~isnan()
) значение в (i,j)
, поэтому в C(i,j)
или - ни
A
, ни B
не имеют определенного значенияв (i,j)
, тем самым оставляя C (i, j) как есть
, предполагая, что C инициализируется для всех значений nan.
Я не нашел ни простого, ни элегантного способа сделатьэто без необходимости
- преобразовать A и B в векторов
- найти не-векторный вектор индексы
AI=find(~isnan(A))
и BI=find(~isnan(B))
- найти пересечение
II
из AI
и BI
- использовать
II
, AI
и BI
дляизменить вектор C такой же длины, как A
и B
, как указано выше.n на три шага выше - изменить форму
C
обратно на M
-by- N
, чтобы, наконец, получить желаемый результат
Я пытался выразить те же шаги, используя матрицы иматричные индексы без успеха.Это единственный способ сделать это в MATLAB?Это кажется довольно громоздким.