#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 ). Например, вы можете размыть изображение, чтобы уменьшить любые резкие изменения цвета.