function [output] = bilinear(input, scale)\n\n% 获取输入图像的尺寸\n[height, width, channels] = size(input);\n\n% 计算缩放后的图像尺寸\nnew_height = round(height * scale);\nnew_width = round(width * scale);\n\n% 创建输出图像\noutput = zeros(new_height, new_width, channels);\n\n% 计算缩放因子\nr_scale = height / new_height;\nc_scale = width / new_width;\n\n% 遍历输出图像的每个像素\nfor i = 1:new_height\n for j = 1:new_width\n % 计算对应于输入图像的像素坐标\n r = (i - 0.5) * r_scale + 0.5;\n c = (j - 0.5) * c_scale + 0.5;\n \n % 计算对应于输入图像像素的四个相邻坐标\n r1 = floor(r);\n c1 = floor(c);\n r2 = r1 + 1;\n c2 = c1 + 1;\n \n % 确保四个相邻坐标都在输入图像范围内\n if r1 < 1\n r1 = 1;\n end\n if r2 > height\n r2 = height;\n end\n if c1 < 1\n c1 = 1;\n end\n if c2 > width\n c2 = width;\n end\n \n % 计算双线性插值权重\n dr = r - r1;\n dc = c - c1;\n \n % 执行双线性插值\n output(i, j, :) = (1 - dr) * (1 - dc) * input(r1, c1, :) + ...\n dr * (1 - dc) * input(r2, c1, :) + ...\n (1 - dr) * dc * input(r1, c2, :) + ...\n dr * dc * input(r2, c2, :);\n end\nend\n\n% 将输出图像转换为uint8类型\noutput = uint8(output);\n\nend


原文地址: https://www.cveoy.top/t/topic/pKiL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录