В двумерном массиве находятся пиксели файлов bmp. и его размер составляет ширину (3 * 65536) * высоту (3 * 65536), которую я масштабировал. Это вот так.
1 2 3 4
5 6 7 8
9 10 11 12
Между 1 и 2 есть 2 отверстия, так как я увеличил исходный двумерный массив. (умножить на 3)
Я использую 1-й метод доступа, подобный массиву, подобный этому.
массив [у * ширина + х]
index
0 1 2 3 4 5 6 7 8 9...
1 2 3 4 5 6 7 8 9 10 11 12
(this array is actually 2-d array and is scaled by multiplying 3)
теперь я могу залатать дыру, как это решение. В двойном цикле for в условии (j%3==1)
Image[i*width+j] = Image[i*width+(j-1)]*(1-1/3) + Image[i*width+(j+2)]*(1-2/3)
В другом условии ( j%3==2 )
Image[i*width+j] = Image[i*width+(j-2)]*(1-2/3) + Image[i*width+(j+1)]*(1-1/3)
Именно так я знаю, что могу залатать дыры, так называемая «билинейная интерполяция».
Я хочу быть уверенным в том, что знаю, прежде чем внедрять эту логику в свой код. Спасибо за чтение.
1/3
равно0
из-за целочисленного деления. Вы можете сделать свою (линейную) интерполяцию более явной:c = lerp(a, b, t);
сa,b,c
пикселями/компонентами цвета иt
с плавающей запятой (в вашем случае(j % 3) / 3.0f
). - person BeyelerStudios   schedule 07.06.2016