代码报错:错误使用 horzcat 要串联的数组的维度不一致。 I=imread('AA.jpg'); %原图 J=histeq(I); figure; subplot(121),imshow(I); title('原图') %显示原图 subplot(122),imshow(J); title('直方图增强后图像') %显示增强后图像 [m,n]=size(I) mm=round(m/2); nn=round(n/2); I=double(I); J=double(J); Iavg=mean2(I); %一阶矩 Javg=mean2(J); %直方图增强后图像一阶矩 Istd=std(std(I)); %二阶矩 Jstd=std(std(J)); %直方图增强后图像二阶矩 colorsum1=0; for i=1:m for j=1:n colorsum1=colorsum1+(I(i,j)-Iavg)^3; end end Iske=(colorsum1/(m*n))^(1/3); % 三阶矩 colorsum2=0; for i=1:m for j=1:n colorsum2=colorsum2+(J(i,j)-Iavg)^3; end end Jske=(colorsum2/(m*n))^(1/3); %直方图增强后图像三阶矩 [Iavg,Istd,Iske;Javg,Jstd,Jske]
时间: 2024-03-07 15:48:40 浏览: 42
解决python cv2.imread 读取中文路径的图片返回为None的问题
5星 · 资源好评率100%
在第25行和第33行中,应该将 `(J(i,j)-Iavg)` 更改为 `(J(i,j)-Javg)`。因为第33行中计算的是直方图增强后图像的二阶矩,而不是原始图像的二阶矩。修改后的代码如下:
```matlab
I=imread('AA.jpg');
J=histeq(I);
figure;
subplot(121),imshow(I); title('原图');
subplot(122),imshow(J); title('直方图增强后图像');
[m,n]=size(I);
mm=round(m/2);
nn=round(n/2);
I=double(I);
J=double(J);
Iavg=mean2(I); %一阶矩
Javg=mean2(J); %直方图增强后图像一阶矩
Istd=std(std(I)); %二阶矩
Jstd=std(std(J)); %直方图增强后图像二阶矩
colorsum1=0;
for i=1:m
for j=1:n
colorsum1=colorsum1+(I(i,j)-Iavg)^3;
end
end
Iske=(colorsum1/(m*n))^(1/3); % 三阶矩
colorsum2=0;
for i=1:m
for j=1:n
colorsum2=colorsum2+(J(i,j)-Javg)^3;
end
end
Jske=(colorsum2/(m*n))^(1/3); %直方图增强后图像三阶矩
[Iavg,Istd,Iske;Javg,Jstd,Jske]
```
阅读全文