Интерполяция растровых изображений с использованием класса bitmap

#c# #.net #bitmap #interpolation #system.drawing

#c# #.net #растровое изображение #интерполяция #system.drawing

Вопрос:

Есть сетка, размер сетки состоит из строк и столбцов 16 * 16. Каждая сетка заполняется значением цвета. Теперь я хочу получить гладкое изображение / интерполированное изображение (пожалуйста, обратитесь по этой ссылке:http://en.wikipedia.org/wiki/Bilinear_interpolation . Пожалуйста, обратитесь к этому рисунку с пояснением (пример билинейной интерполяции на единичном квадрате с z-значениями 0, 1, 1 и 0,5, как указано. Интерполированные значения между ними представлены цветом.))

Как мне достичь этого, используя класс bitmap?

Комментарии:

1. Вы хотите, чтобы кто-нибудь здесь написал алгоритм для вас? Прохождение.

Ответ №1:

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

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

Если вас не беспокоит производительность, вы можете использовать GetPixel и SetPixel для чтения и записи отдельных пикселей. Вы также можете получить доступ к базовым данным растрового изображения напрямую, используя LockBits. Это сложнее и требует более глубокого понимания того, как пиксели хранятся в памяти, но может обеспечить лучшую производительность при изменении всего растрового изображения.

Комментарии:

1. можно ли выполнить интерполяцию, сохраняя размер растрового изображения равным 16 * 16; я имею в виду, что исходный размер равен 16 * 16, а размер назначения равен 16 * 16;

2. При интерполяции вы вычисляете значения между существующими значениями. С точки зрения обработки изображений вы делаете это при увеличении изображения. Затем вам нужно интерполировать значения новых пикселей, введенных в существующие пиксели. Если вы хотите изменить цвета без изменения размера изображения, вы, вероятно, захотите выполнить свертку ( en.wikipedia.org/wiki/Convolution ). Например, вы можете размыть изображение, чтобы уменьшить любые резкие изменения цвета.