Как создать матрицу Bayer произвольного размера?

В упорядоченное сглаживание используется матрица Bayer.

Как генерируется эта матрица? Какой алгоритм можно использовать для генерации матрицы произвольного размера?

4 голоса | спросил mrpyo 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 14:37:27 +0300 2016, 14:37:27

1 ответ


1

(Похоже, что @ Bálint не обошел его ...:)

Чтобы процитировать статью, поскольку она (вероятно) была, когда вы сначала спросили:

  

Пороговые карты произвольного размера могут быть разработаны с помощью простого правила: сначала заполните   каждый слот с последовательным целым числом, начиная с 1. Затем переупорядочивайте их таким образом   что среднее расстояние между двумя последовательными числами на карте равно   насколько это возможно, чтобы таблица «обертывалась» по краям.

С тех пор было добавлено более подробное объяснение:

  

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

     

Рекурсивное выражение может быть вычислено явно с использованием только битовой арифметики:
M(i, j) = bit_reverse(bit_interleave(bitwise_xor(x, y), x)) / n ^ 2

Этот последний бит может быть реализован с небольшими проблемами, например. Python:

 def bit_reverse(x, n):
    return int(bin(x)[2:].zfill(n)[::-1], 2)

def bit_interleave(x, y, n):
    x = bin(x)[2:].zfill(n)
    y = bin(y)[2:].zfill(n)
    return int(''.join(''.join(i) for i in zip(x, y)), 2)

def bayer_entry(x, y, n):
    return bit_reverse(bit_interleave(x ^ y, y, n), 2*n)

def bayer_matrix(n):
    r = range(2**n)
    return [[bayer_entry(x, y, n) for x in r] for y in r]

print(bayer_matrix(2))

Это не создает довольно ту же матрицу, что и в статье Википедии, но как автор исходный источник пишет:« На практике это достаточно хорошо ».

ответил criptych 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 29 Sep 2017 23:22:49 +0300 2017, 23:22:49

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132