MATLAB实现显著性检测评估指标NSS的方法
作者:王文波玉龙_946 | 来源:互联网 | 2024-11-19 20:42
本文介绍了一种基于MATLAB的显著性检测评估指标NormalizedScanpathSaliency(NSS)的实现方法。通过计算显著图与注视点图之间的NSS分数,可以有效评估显著性模型的性能。
### calcNSSscore.m
```matlab
function [ score ] = calcNSSscore( salMap, eyeMap )
% calcNSSscore 计算显著图的 NSS 分数
% 使用: [score] = calcNSSscore(salMap, eyeMap)
%
% score : 每个注视点的分数数组
% salMap : 显著图,将被调整为与 eyeMap 相同大小
% eyeMap : 注视点图,应为二进制图
% 调整和归一化显著图
salMap = double(imresize(salMap, size(eyeMap), 'bicubic'));
mapMean = mean2(salMap);
mapStd = std2(salMap);
salMap = (salMap - mapMean) / mapStd; % 归一化地图
% 计算 NSS
[X, Y] = find(eyeMap > 0);
NSSVector = zeros(1, length(X));
for p = 1:length(X)
NSSVector(p) = salMap(X(p), Y(p));
end
score = NSSVector;
```
### main.m
```matlab
clear;
clc;
smap_path = 'E:\Dataset180303\final_data\smap_Result1\';
gmap_path = 'E:\Dataset180303\final_data\image_resize_gt\';
smap_files = dir(fullfile(smap_path, '*.jpg'));
for j = 1:length(smap_files)
disp(j);
gmap_name = fullfile(gmap_path, num2str(j), '.jpg');
smap_name = fullfile(smap_path, num2str(j), '.jpg');
gmap = imresize(imread(gmap_name), [224, 224], 'bicubic');
smap = imresize(imread(smap_name), [224, 224], 'bicubic');
sal_map = mat2gray(smap);
if size(gmap, 3) == 3
gt_map = rgb2gray(gmap);
else
gt_map = gmap;
end
threshold_value = graythresh(gt_map); % 使用最大类间方差法确定阈值
gt_final_map = im2bw(gt_map, threshold_value); % 将 gt_map 转换为布尔图
nss_scores = calcNSSscore(sal_map, gt_final_map);
nss_scores = abs(nss_scores);
a(j, 1) = mean(nss_scores);
disp(j);
end
idx = find(isnan(a));
a(idx) = 1.5;
RGBD_NSS = mean(a);
nss = mean(RGBD_NSS);
```
以上代码首先定义了一个 `calcNSSscore` 函数来计算显著图与注视点图之间的 NSS 分数。然后在 `main.m` 中,读取显著图和真实注视点图,对它们进行预处理,并调用 `calcNSSscore` 函数计算每个图像的 NSS 分数,最后计算所有图像的平均 NSS 分数。
推荐阅读
-
目录节点流、处理流读文件:BufferedReader的使用写文件:BufferedWriter的使用节点流处理流节点流和处理流的区别和联系字符流Buf ...
[详细]
蜡笔小新 2024-11-18 14:47:25
-
在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ...
[详细]
蜡笔小新 2024-11-18 18:04:32
-
-
协程作为一种并发设计模式,能有效简化Android平台上的异步代码处理。自Kotlin 1.3版本引入协程以来,这一特性基于其他语言的成熟理念,为开发者提供了新的工具,以增强应用的响应性和效率。 ...
[详细]
蜡笔小新 2024-11-19 10:13:02
-
在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ...
[详细]
蜡笔小新 2024-11-18 16:46:17
-
本文探讨了如何通过异步加载技术处理网页中大型第三方插件的加载问题,避免将大文件打包进主JS文件中导致的加载时间过长,介绍了实现异步加载的具体方法及其优化。 ...
[详细]
蜡笔小新 2024-11-19 17:19:15
-
本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ...
[详细]
蜡笔小新 2024-11-19 15:36:11
-
在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ...
[详细]
蜡笔小新 2024-11-19 15:31:16
-
企业云盘中的在线预览功能是提高工作效率的关键特性之一。借助云盒子提供的文件转换技术,用户可以无需安装额外软件,直接在线查看多种类型的文档,包括最新的WPS、Visio和Project文件。 ...
[详细]
蜡笔小新 2024-11-19 13:41:52
-
本文详细介绍了如何使用JavaScript将用户通过文件输入控件选择的图片文件转换为Base64编码字符串,适用于Web前端开发中图片上传前的预处理。 ...
[详细]
蜡笔小新 2024-11-19 12:43:15
-
本文详细探讨了如何解决在Windows环境中使用Pytesser模块进行OCR(光学字符识别)时遇到的WindowsError错误,提供了具体的解决方案。 ...
[详细]
蜡笔小新 2024-11-19 11:32:27
-
本文介绍了如何在一个简单的闪存卡片应用中实现平滑的手势返回功能,以增强用户体验。 ...
[详细]
蜡笔小新 2024-11-19 10:27:04
-
本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ...
[详细]
蜡笔小新 2024-11-18 21:13:13
-
页面加载进度条是提升用户体验的重要工具,通过在页面头部显示一个加载状态,并在页面完全加载后隐藏,可以有效减少用户的等待焦虑。本文将详细介绍如何使用 jQuery 实现这一功能。 ...
[详细]
蜡笔小新 2024-11-18 20:00:09
-
本文将详细介绍如何在CentOS 7上安装和配置Kafka,包括必要的环境准备、JDK和Zookeeper的配置步骤。 ...
[详细]
蜡笔小新 2024-11-18 17:41:13
-
所在位置|室友_Python+OpenCv实现图像边缘检测(滑动调节阈值) ...
[详细]
蜡笔小新 2024-11-18 15:40:40
-