clc clear all %% img_in = imread('0066.jpg'); m = size(img_in,1); n = size(img_in,2); img_lab = rgb2lab(img_in); img_L_mean = mean(mean(img_lab(:,:,1))); img_a_mean = mean(mean(img_lab(:,:,2))); img_b_mean = mean(mean(img_lab(:,:,3))); %% %高斯滤波 img_R = img_in(:,:,1); img_G = img_in(:,:,2); img_B = img_in(:,:,3); w = fspecial('gaussian',[7 7]); img_R_blur = imfilter(img_R,w); img_G_blur = imfilter(img_G,w); img_B_blur = imfilter(img_B,w); img_blur = cat(3,img_R_blur,img_G_blur,img_B_blur); figure('name','滤波') imshow(img_blur) img_lab_blur = rgb2lab(img_blur); %% %计算显著图 Sd = zeros(m,n); for i = 1:m for j = 1:n Sd(i,j) = sqrt((img_L_mean - img_lab_blur(i,j,1))^2 + (img_a_mean - img_lab_blur(i,j,2))^2 + (img_b_mean - img_lab_blur(i,j,3))^2); end end %归一化 Sd_normalized = figure_normalize(Sd); imwrite(Sd_normalized,'FT_saliency.jpg') figure imshow(Sd_normalized) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end运行代码时报错错误: 非法使用保留关键字 "end"。改进代码
时间: 2023-06-14 15:04:14 浏览: 71
代码中的错误是因为您没有正确定义 `figure_normalize` 函数,导致程序无法执行。此外,您应该将 `end` 改为 `endfor` 或 `endfunction`,以正确结束循环或函数定义。以下是改进后的代码:
```
clc
clear all
img_in = imread('0066.jpg');
m = size(img_in,1);
n = size(img_in,2);
img_lab = rgb2lab(img_in);
img_L_mean = mean(mean(img_lab(:,:,1)));
img_a_mean = mean(mean(img_lab(:,:,2)));
img_b_mean = mean(mean(img_lab(:,:,3)));
%% %高斯滤波
img_R = img_in(:,:,1);
img_G = img_in(:,:,2);
img_B = img_in(:,:,3);
w = fspecial('gaussian',[7 7]);
img_R_blur = imfilter(img_R,w);
img_G_blur = imfilter(img_G,w);
img_B_blur = imfilter(img_B,w);
img_blur = cat(3,img_R_blur,img_G_blur,img_B_blur);
figure('name','滤波')
imshow(img_blur)
img_lab_blur = rgb2lab(img_blur);
%% %计算显著图
Sd = zeros(m,n);
for i = 1:m
for j = 1:n
Sd(i,j) = sqrt((img_L_mean - img_lab_blur(i,j,1))^2 + (img_a_mean - img_lab_blur(i,j,2))^2 + (img_b_mean - img_lab_blur(i,j,3))^2);
endfor
endfor
%归一化
Sd_normalized = normalize(Sd);
imwrite(Sd_normalized,'FT_saliency.jpg')
figure
imshow(Sd_normalized)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function out = normalize(in)
out = (in - min(in(:))) ./ (max(in(:)) - min(in(:)));
endfunction
```