You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复图像滤波中‘Arrays have incompatible sizes for this operation.’错误

错误原因与修复方案

错误原因

你遇到的「数组尺寸不兼容」问题,核心是图像维度不匹配:

  • 若1.png是彩色图像,imread读取后会生成三维数组(M×N×3,对应RGB三个颜色通道)。
  • 你用[M, N] = size(f)只获取了前两个维度,但后续生成的H_hb是二维数组(M×N);而fft2(double(f))对三维图像处理后得到的F是三维数组(M×N×3),二维数组与三维数组无法直接执行逐元素相乘操作,因此报错。

修复方案

根据你的需求选择以下两种方案之一:

方案1:转为灰度图处理(适合仅需灰度信息的文本检测)

在读取图像后添加一行代码,将彩色图转为二维灰度图,确保所有变量维度一致:

% Load the image and convert to grayscale
f = imread('1.png'); 
f = rgb2gray(f); % 转为灰度图,将三维数组变为二维
[M, N] = size(f);
% High-boost filter
fc = 0.1;
[f1, f2] = freqspace([M N], 'meshgrid');
d = sqrt(f1.^2 + f2.^2);
H_hp_gauss = 1 - exp(-(d.^2)/2/fc^2);
A = 2;
H_hb = (A-1) + H_hp_gauss;
% Image to filter 
F = fft2(double(f));
F = fftshift(F);
G = F .* H_hb;
G = ifftshift(G);
g = ifft2(G); 
g = real(g); 
g = uint8(g);
imshow(g)

方案2:保留彩色通道处理(需保留图像彩色信息)

将二维的滤波器H_hb扩展为三维,匹配彩色图像的通道数(复制到三个RGB通道):

% Load the image.
f = imread('1.png'); 
[M, N, C] = size(f); % 读取图像的三维尺寸(高度、宽度、通道数)
% High-boost filter
fc = 0.1;
[f1, f2] = freqspace([M N], 'meshgrid');
d = sqrt(f1.^2 + f2.^2);
H_hp_gauss = 1 - exp(-(d.^2)/2/fc^2);
A = 2;
H_hb = (A-1) + H_hp_gauss;
H_hb = repmat(H_hb, [1 1 C]); % 将二维滤波器扩展为三维,匹配通道数
% Image to filter 
F = fft2(double(f));
F = fftshift(F);
G = F .* H_hb;
G = ifftshift(G);
g = ifft2(G); 
g = real(g); 
g = uint8(g);
imshow(g)

内容的提问来源于stack exchange,提问作者Yiğit Yılmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:22:22