【发布时间】:2018-04-14 17:52:47
【问题描述】:
我已经编写了 Matlab 代码来执行以下步骤:
- 阅读山寨原图。
- 获取其大小。
- 显示曲线拟合的 x 值。
- 复制原始图片。
- 遍历天空所在的前 70 行。使用函数 polyfit 和 .
- 单独遍历每种颜色。
- 多项式逼近需要将每一行作为一个双向量。
- 计算合成行。
- 将行带入新的天空。
- 结束循环
- 显示新图像。
- 显示旧图像。
我已经对其进行了测试和调试,但复制输入图像的代码部分似乎无法正常工作。代码如下:
function (imageName)
inputImage = imread(imageName);
[sizeX,sizeY,~] = size(inputImage);
copyImage = ones(sizeX,sizeY,3);
for i=1:sizeX
for j=1:sizeY
for d=1:3
copyImage(i,j,d)= inputImage(i,j,d);
end
end
end
for r = 1:70
for co = 1:3
var1 = 1:sizeY;
var2 = copyImage(r,:,co);
P = polyfit(var1,var2,2);
Y = polyval(P,var1);
copyImage(r,:,co) = Y;
end
end
imshow(copyImage);
end
谁能告诉我如何复制输入图像有什么问题?谢谢。
【问题讨论】:
-
一个简单的
copyImage = inputImage将制作副本,无需循环。当您的图像位于uint8中时,您显然犯的错误是将copyImage初始化为双精度。效果可以在imshow阶段取消,但首先不需要引入。