Нанесение положительных и отрицательных пикселей изображения на отдельные участки - PullRequest
0 голосов
/ 15 ноября 2018

Предположим, есть изображение, подобное этому, которое состоит из двух изображений, 1 и 6, которые как бы накладываются друг на друга, если вы внимательно посмотрите на него.

Итак, мне нужно визуализировать каждую из этих цифр отдельно, имея все положительные пиксели исходного изображения на одном изображении и все отрицательные пиксели на втором. Есть ли способ добиться этого в python, используя matplotlib.pyplot, не путаясь со структурой изображения? По сути, мне нужно, чтобы все пиксели белого цвета отображались отдельно от пикселей черного цвета. enter image description here

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете установить все значения выше или ниже некоторого порогового значения на nan, чтобы они не отображались на конечном изображении.

Следующий код полностью исключает диапазон от 0,4 до 0,6.Желтый фон выбран, чтобы показать, что в этой области нет пикселей.

import numpy as np
import matplotlib.pyplot as plt

img = plt.imread("grayscaleimage.png")[:,:,0]

white = np.copy(img)
white[white<0.6] = np.nan

dark = np.copy(img)
dark[dark>0.4] = np.nan

fig = plt.figure()
ax0 = fig.add_subplot(211)
ax1 = fig.add_subplot(223)
ax2 = fig.add_subplot(224)

ax0.imshow(img, vmin=0, vmax=1, cmap="Greys")
ax1.imshow(white, vmin=0, vmax=1, cmap="Greys")
ax2.imshow(dark, vmin=0, vmax=1, cmap="Greys")

for ax in (ax1,ax2):
    ax.set_facecolor("gold")

plt.show()

enter image description here


Вот тестовое изображение, используемое ввыше: enter image description here (щелкните правой кнопкой мыши, сохраните как ...)
...