MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 教程资料 > matlab教程 > 基于itti显著图的图像显著区域提取

基于itti显著图的图像显著区域提取

% 基于Itti显著图的图像显著区域提取

% 清除工作空间和命令窗口
clear;
clc;

% 读取图像
image = imread('image.jpg');
% 转换为灰度图像
gray_image = rgb2gray(image);

% 参数设置
n_scales = 5; % 金字塔层数
sigma = 2; % 高斯滤波器的标准差
k = 0.1; % 调整显著图的对比度参数

% 计算高斯金字塔
pyramid = cell(n_scales, 1);
pyramid{1} = gray_image;
for i = 2:n_scales

pyramid{i} = imresize(pyramid{i-1}, 0.5);

end

% 计算显著图
saliency_map = zeros(size(gray_image));
for i = 1:n_scales

% 计算边界图
boundary_map = imfilter(pyramid{i}, fspecial('log', 2*ceil(3*sigma)+1, sigma), 'same', 'replicate');
% 计算亮度图
intensity_map = imfilter(pyramid{i}, fspecial('gaussian', 2*ceil(3*sigma)+1, sigma), 'same', 'replicate');
% 计算颜色图
color_map = imfilter(pyramid{i}, fspecial('gaussian', 2*ceil(3*sigma)+1, 2*sigma), 'same', 'replicate');

% 计算显著图
saliency_map = saliency_map + (abs(boundary_map) + abs(intensity_map) + abs(color_map));

end

% 归一化显著图
saliency_map = (saliency_map - min(saliency_map(:))) ./ (max(saliency_map(:)) - min(saliency_map(:)));

% 调整显著图的对比度
saliency_map = saliency_map.^k;

% 显示原始图像和显著图
figure;
subplot(1,2,1), imshow(image), title('Original Image');
subplot(1,2,2), imshow(saliency_map), title('Saliency Map');

% 扩展:提取显著区域
threshold = graythresh(saliency_map); % 使用Otsu方法选择阈值
binary_map = imbinarize(saliency_map, threshold); % 二值化显著图
saliency_region = image;
saliency_region(repmat(~binary_map, [1, 1, 3])) = 0; % 将非显著区域置为黑色

% 显示原始图像、显著图和显著区域
figure;
subplot(1,3,1), imshow(image), title('Original Image');
subplot(1,3,2), imshow(saliency_map), title('Saliency Map');
subplot(1,3,3), imshow(saliency_region), title('Saliency Region');