Эффективное смешивание не наноразмерных преобразованных мозаичных изображений в Matlab - PullRequest
0 голосов
/ 08 октября 2011

В настоящее время я работаю над улучшением наложения части изображения мозаика пример приложения на домашней странице 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?Это кажется довольно громоздким.

1 Ответ

1 голос
/ 08 октября 2011

Может быть, я что-то упускаю (например, я не понимаю, зачем вам нужно преобразовывать матрицу в векторы).

В любом случае, вот попытка:

% Unconditionnaly compute the average into temp D matrix
D=(A+B)/2;
% Restore A and B values where B and A are NaN
D(isnan(A))=B(isnan(A));
D(isnan(B))=A(isnan(B));
% Only modify C wherever the final result is not NaN
C(~isnan(D))=D(~isnan(D));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...