Как получить одинаковое затенение и цвета с источником света в Python на двух разных изображенияхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить одинаковое затенение и цвета с источником света в Python на двух разных изображениях

Сообщение Anonymous »

У меня есть два разных изображения карт, которые расположены рядом друг с другом, и я хочу затенять их одним и тем же методом, чтобы они легко соединялись вместе с затенением и цветом. Однако, когда я использую LightSource в Python, они имеют разные затенения, несмотря на то, что используют одни и те же входы. Мой код выглядит так: < /p>

Код: Выделить всё

import numpy as np
import rasterio
from matplotlib import cm
from matplotlib.colors import ListedColormap, LinearSegmentedColormap, LightSource, rgb_to_hsv, hsv_to_rgb
import matplotlib.pyplot as plt

with rasterio.open("image_1.tiff", 'r') as ds:
z1 = ds.read()

with rasterio.open("image_2.tiff", 'r') as ds:
z2 = ds.read()

z1 = z1[0,:,:]
z2 = z2[0,:,:]

vmin = -12000
vmax = 9000
vexag = 0.05

blend_mode = 'soft'

cmap = cm.ocean.copy()
ocean = cmap(np.linspace(0.30, 0.85, 144))

colors = [
(0.00, 'palegoldenrod'),
(0.05, 'burlywood'),
(0.30, 'sienna'),
(0.50, 'tan'),
(0.70, 'snow'),
(1.00, 'white'),
]
cmap = LinearSegmentedColormap.from_list('cm', colors)
land = cmap(np.linspace(0, 1, 108))
cmap = ListedColormap(np.concatenate((ocean, land)))

light = LightSource(azdeg = 45, altdeg = 45)

rgb1 = light.shade(
z1, cmap = cmap,
blend_mode = blend_mode, vert_exag = vexag, vmin = vmin, vmax = vmax
)

rgb1[:,:,-1][np.isnan(z1)] = 0
rgb1 = np.uint8(rgb1*255)

rgb2 = light.shade(
z2, cmap = cmap,
blend_mode = blend_mode, vert_exag = vexag, vmin = vmin, vmax = vmax
)
rgb2[:,:,-1][np.isnan(z2)] = 0
rgb2 = np.uint8(rgb2*255)

rgb3 = np.concatenate((rgb2, rgb1), axis=1)

plt.figure()
plt.imshow(rgb3)
plt.show()
Результаты выглядят примерно так:
Из того, что я собираю, это должно сделать с вертикальным экстрагентом. Если я установите преувеличение на 0, результаты выглядят следующими:
Теперь они подходят вместе так, как я хочу, но вы больше не можете видеть какие -либо детали в изображении. Можно ли сохранить вертикальное преувеличение до 0,05, но все же получить те же цвета и затенение на изображении?

Подробнее здесь: https://stackoverflow.com/questions/796 ... wo-differe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»