Как случайный DC?
Я хочу сделать скремблирование изображения с помощью DCT в Matlab. я использовал изображение в градациях серого. Я хочу, чтобы случайный DC со случайным значением. как установить коэффициент постоянного тока каждого блока на случайное значение 0-255
и оставьте все остальные - это шаги для эксперимента: разделите серое изображение на 8x8
блоки; Выполнить DCT для каждого блока; установить коэффициент постоянного тока каждого блока в случайное значение 0-255
и оставьте все остальные; Выполните обратное DCT и восстановите образ; Сравните восстановленное изображение с исходным по SSIM. благодарю вас
1 ответ
Вопрос заключается в том, "как установить коэффициент постоянного тока каждого блока в (заданное) значение...". Таким образом, процедура, которую вы упоминаете (DCT, установите коэффициент DC, затем iDCT) должна работать. Вы бы использовали функции Matlab dct2 и idct2.
Однако из определения DCT коэффициент DC представляет собой сумму значений пикселей в каждом из ваших блоков; установка его в случайное значение и принятие обратного преобразования приведет к блоку, который будет отличаться от исходного только константой. Это не удивительно, потому что вы просто меняете уровень DC. Таким образом, вы можете пропустить DCT/iDCT и напрямую добавить или вычесть случайное значение для всех пикселей в каждом блоке.
Но вы можете видеть, что каждый блок будет выглядеть как оригинальный, за исключением разной яркости; Кроме того, границы между блоками были бы вполне видимыми, поэтому метод скремблирования мог быть легко изменен.