运行以上代码时出错,出错 imresize (line 141) params = parseInputs(varargin{:}); 出错 zxj (line 4) I_recon = imresize(I_norm, size(I));
时间: 2024-02-15 15:02:37 浏览: 102
这个错误可能是由于 `size(I)` 返回的是一个三维矩阵,而 `imresize` 函数需要的是一个二维矩阵。你可以尝试将 `size(I)` 改为 `size(I(:,:,1))`,即只取图像的第一个通道的大小作为参数传递给 `imresize` 函数。修改后的代码如下:
```
I = imread('original_image.jpg');
I_gray = rgb2gray(I);
I_norm = imadjust(I_gray, stretchlim(I_gray));
I_recon = imresize(I_norm, size(I(:,:,1)));
imshow(I_recon);
```
希望这个修改可以解决你的问题。
相关问题
MATLAB中错误使用 .* 矩阵维度必须一致。 出错 register_color_image (line 17) tmp=fft2(im1).*fft2(flipud(fliplr(im2))); 出错 sr_gui>RegisterImageButton_Callback (line 387) timage=register_color_image(double(handles.images{1}), double(handles.images{id})); 出错 gui_mainfcn (line 95) feval(varargin{:}); 出错 sr_gui (line 42) gui_mainfcn(gui_State, varargin{:}); 出错 matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)sr_gui('RegisterImageButton_Callback',hObject,eventdata,guidata(hObject)) 计算 UIControl Callback 时出错
这个错误通常发生在你在计算两个不同大小的矩阵的点积时,因为 .* 运算符要求两个矩阵的维度必须一致。在你的代码中,可能是 im1 与 im2 的维度不一致,导致出现这个错误。你可以检查一下 im1 与 im2 的大小是否一致。如果不一致,你可以使用 MATLAB 中的一些函数来调整它们的大小,以使它们具有相同的维度,如 imresize 或 padarray 等函数。
% 对图像进行归一化处理 for i = 1:length(images.Files) im = readimage(images, i); im = imresize(im, inputSize(1:2)); im = (im - mean(im(:))) / std(im(:)); images.readimage(i) = {im}; end 错误使用 var (第 74 行) 数据类型无效。第一个输入参数必须为单精度值或双精度值。 出错 std (第 59 行) y = sqrt(var(varargin{:})); 出错 wangluo2 (第 68 行) im = (im - mean(im(:))) / std(im(:)); 怎么修改,给出修改后的代码
根据错误提示,我们需要将图像数据类型转换为单精度或双精度。可以使用 `im2single` 函数将图像转换为单精度类型。
修改后的代码如下:
```matlab
for i = 1:length(images.Files)
im = readimage(images, i);
im = imresize(im, inputSize(1:2));
im = (im2single(im) - mean(im2single(im(:)))) / std(im2single(im(:)));
images.readimage(i) = {im};
end
```
这里使用 `im2single` 将图像转换为单精度类型,并在计算均值和标准差时也使用了 `im2single` 函数。
阅读全文