каков самый быстрый способ генерации случайных изображений из цветовой гистограммы?

В таблице поддержки Visual Studio C ++ 11 четко указано, что эталонные квалификаторы еще не реализованы в официальном выпуске. Это включает в себя Visual Studio 2013.

Мне не удалось найти подтверждение в примечаниях к выпуску для различных представлений Visual Studio «14» и 2015, которые доступны в этих предварительных просмотрах (и, следовательно, в предстоящем Visual Studio 2015), хотя это меня не удивило, учитывая, что CTP в ноябре 2013 года якобы поддерживает их .

Кроме того, сообщение в блоге из команды Visual Studio также предполагает, что Visual Studio 2015 будет поддерживать эту функцию.

2
задан jack 13 July 2018 в 18:01
поделиться

2 ответа

numpy.random.choice

Аргументы из связанных документов:

a: 1-D массивный или int

Если ndarray, из его элементов генерируется случайная выборка. Если int, случайная выборка генерируется так, как если бы был np.arange (a)

size: int или tuple of ints, необязательный

Форма вывода. Если заданная форма равна, например, (m, n, k), то рисуются m * n * k выборок. Значение по умолчанию: None, в этом случае возвращается одно значение.

replace: boolean, optional

Независимо от того, имеет ли образец с заменой или без нее

p: 1 -D array-like, optional

Вероятности, связанные с каждой записью в a. Если не указано, образец принимает равномерное распределение по всем элементам в a.


Аргумент shape должен быть размером вашего изображения, например, (100,100). Аргументом a должно быть распределение, а аргументом p должно быть распределение, генерируемое гистограммой.

Например,

import numpy as np
bins = np.array([0,0.5,1])
freq = np.array([1.,2,3])
prob = freq / np.sum(freq)
image = np.random.choice(bins, size=(100,100), replace=True, p=prob)
plt.imshow(image)

дает


Для поддержки нескольких цветовых каналов у вас есть несколько вариантов. Вот один, где мы выбираем из цветовых индексов вместо самих цветов:

colors = np.array([(255.,0,0), (0,255,0), (0,0,255)])
indices = np.array(range(len(colors)))
im_indices = np.random.choice(indices, size=(100,100), p=prob)
image = colors[im_indices]
3
ответ дан en_Knight 17 August 2018 в 12:18
поделиться
  • 1
    Спасибо за ответ. Еще один вопрос, однако, для цветного изображения, как мы можем генерировать цветовую гистограмму? Поскольку есть три канала, как мы сглаживаем диапазон цветов в 1 размер? – jack 13 July 2018 в 20:12
  • 2
    @jack это отвечает на ваш вопрос? – en_Knight 13 July 2018 в 20:18
  • 3
    Спасибо за ответ. Я думаю, что получаю эту идею, но код для создания цветового пространства с формой (255, 255, 255) неверен, хотя – jack 13 July 2018 в 20:32
  • 4
    @jack извините, у меня возникли проблемы с разбором второго предложения - я неправильно понял ваши намерения (код работает, но делает не то, что делает), или код не работает, или все работает нормально? – en_Knight 13 July 2018 в 20:34
  • 5
    К сожалению, я имел в виду цвета = np.array ([(255., 0,0), (0,255,0), (0,0,255)]) не генерирует массив с формой (255, 255, 255). Это ты имел в виду? – jack 13 July 2018 в 20:36

random.choices может выбирать элементы из взвешенной совокупности. Пример:

>>> import random
>>> histogram = {"white": 1, "red": 5, "blue": 10}
>>> pixels = random.choices(list(histogram.keys()), list(histogram.values()), k=25)
>>> pixels
['blue', 'red', 'red', 'red', 'blue', 'red', 'red', 'white', 'blue', 'white', 'red', 'red', 'blue', 'red', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue']
1
ответ дан Kevin 17 August 2018 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: