Мне нужно заменить 8-битные значения (от 0 до 255) индексированного набора изображения (конечного изображения), следуя «значениям карты» из другого изображения (второго изображения) серой шкалы, связанные индексы карты которого были выбраны из основного изображения .
На самом деле это то же самое, что MATLAB делает с
indexS = find(image1 == integer ('could be a integer from 1 to 255'))
imagfinal(indexS) = imagsecondary(indexS).
Я пробовал следующие примеры для python / matlab find () в стеке, например: Функция find () в стиле MATLAB в Python . И связанные с ними ...
Я пробовал n.nonzero, np.argwhere и np.where, но я действительно запутался.
У меня есть три исходных изображения, скажем, A, B, C, одинаковой формы, например. (100x100) с различными значениями от 0 до 255, я имею в виду, что они абсолютно серые шкалы, отличающиеся друг от друга.
Итак, 1-й шаг -
Мне нужно получить все индексы со значениями = 1 (но может быть, 10, 196, до 255) от A, поэтому я сделал:
Aboolean = np.equal(A,1)
результат
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],...
Затем я попытался использовать результаты массива логических индексов для получения значений из B:
Bnew = B[Aboolean]
Но это не сработало для дальнейших шагов, потому что в результате получается карта значений и индексы теряются ...
Предполагается, что значения из Bnew заменяют соответствующие значения 8-разрядными на изображении C, я имею в виду эти 8-разрядные значения в одну и ту же позицию (или одинаковые индексы), помня, что B и C (также A) имеют одинаковые массив формы / размера (100x100).
Итак, я попробовал еще раз:
D = np.where(Aboolean,B,C)
при построении изображения, конечным результатом будет точно такое же изображение C !! Никаких изменений, вообще.
fig, ax = plt.subplots(nrows=1, figsize=(16,20))
ax.imshow(D, cmap='gray',interpolation='nearest')
Результаты того же изображения 'C'
Моя цель - это заменить набор значений из B на C (управляемый теми же позициями индекса), которые были разрезаны по карте индексов условий на A.