基于超像素距离的图像显著性检测(Matlab2017a)

显著区域和非显著区域的特征提取(Matlab实现) 在计算机视觉和图像处理领域中,显著区域和非显著区域的特征提取是一项重要任务。本文将介绍如何使用Matlab实现显著区域和非显著区域的特征提取。总结起来,本文介绍了如何使用Matlab实现显著区域和非显著区域的特征提取。通过提取图像的颜色特征,并使用阈值分割方法,我们可以得到图像中的显著区域。在Matlab中,我们可以使用图像处理工具箱中的函数来实现显著区域和非显著区域的特征提取。根据具体的应用需求,可以选择不同的特征和算法来实现显著区域和非显著区域的提取。显著区域和非显著区域的特征提取(Matlab实现) 阅读详情


一.基本步骤

 1.导入一张图片,将图片压缩(在这里压缩成300*300)。

I=imread('timg.jpg');
I=imresize(uint8(I),[300,300]);

2.对压缩后的图片进行一次高斯平滑。

mode=fspecial('gaussian', 6, 3);
IS=imfilter(I,mode,'replicate'); 

3.对平滑后的图片进行超像素分割。

[label,num]=superpixels(IS,500);

其中,label为带有超像素的标签的与照片同大小矩阵,同一标签数字的像素属于同一超像素,num为分后的超像素个数。

4.建立一个num*5维的矩阵,用于保存超像素的信息(每行分别为每个超像素的平均横坐标,平均纵坐标,平均R,平均G,平均B)。根据原图与label的对应关系求出矩阵。

[m n]=size(label);
supmean=uint64(zeros(num,5));
labelnum=zeros(num);
%计算略

5.根据求出的超像素信息矩阵,分别求出每个超像素点的全局、边缘和局部显著性。

    1)全局

    对于超像素i,计算i到所有超像素点的距离之和,作为这个点的显著性。


为了便于显示,对其进行规范到[0,255]:


之后用Sa(i)代替超像素点的灰度值,即可得到全局显著性结果。

2)边缘

    与1)类似,唯一区别就是求距离之和时先判断j是否处于边缘(设一阈值,当某点距离边缘的距离小于阈值,则认定为边缘点)



3)与1)类似,唯一区别就是判断i与j的欧氏距离是否小于某个阈值,如果小于,则按下式计算显著性:


其中Sa(j)可为1)中j的显著性。


完整代码:

I=imread('timg.jpg');
%I=rgb2gray(I);
I=imresize(uint8(I),[300,300]);
mode=fspecial('gaussian', 6, 3);
IS=imfilter(I,mode,'replicate');  
[label,num]=superpixels(IS,500);
BW = boundarymask(label);
 %imshow(imoverlay(IS,BW,'cyan'),'InitialMagnification',100);
 %figure
[m n]=size(label);
supmean=uint64(zeros(num,5));
labelnum=zeros(num);

for i=1:m
    for j=1:n
        supmean(label(i,j),1)=supmean(label(i,j),1)+i;
        supmean(label(i,j),2)=supmean(label(i,j),2)+j;
        supmean(label(i,j),3)=(supmean(label(i,j),3)+uint64(IS(i,j,1)));
        supmean(label(i,j),4)=(supmean(label(i,j),4)+uint64(IS(i,j,2)));
        supmean(label(i,j),5)=(supmean(label(i,j),5)+uint64(IS(i,j,3)));
        labelnum(label(i,j))=labelnum(label(i,j))+1;
    end
end
for i=1:num
    supmean(i,1)=uint16(supmean(i,1)./labelnum(i));
    supmean(i,2)=uint16(supmean(i,2)./labelnum(i));
    supmean(i,3)=uint16(supmean(i,3)./labelnum(i));
    supmean(i,4)=uint16(supmean(i,4)./labelnum(i));
    supmean(i,5)=uint16(supmean(i,5)./labelnum(i));
end

IM=zeros(m,n,3);
for i=1:m
    for j=1:n
        IM(i,j,1)=uint8(supmean(label(i,j),3));
        IM(i,j,2)=uint8(supmean(label(i,j),4));
        IM(i,j,3)=uint8(supmean(label(i,j),5));
    end
end
supim=uint8(cat(3,IM(:,:,1),IM(:,:,2),IM(:,:,3)));
%imshow(supim);


%全局 
supmean=double(supmean);
dist_all=zeros(num,1);
w0=0.1;
for i=1:num
   for j=1:num
       dist_all(i)=dist_all(i)+(w0*(supmean(i,1)-supmean(j,1))^2+w0*(supmean(i,2)-supmean(j,2))^2+(supmean(i,3)-supmean(j,3))^2+(supmean(i,4)-supmean(j,4))^2+(supmean(i,5)-supmean(j,5))^2)^0.5;
   end
end
%归一化
dist_min=min(dist_all);
dist_max=max(dist_all);
for i=1:num
    dist_all(i)=(dist_all(i)-dist_min)*255/(dist_max-dist_min);
end
dist_all=uint8(dist_all);
im_all=zeros(300,300);
for i=1:m
    for j=1:n
        im_all(i,j)=dist_all(label(i,j));
    end
end
im_all=uint8(im_all);

%边缘
dist_edge=zeros(num,1);
w0=0.1;
thre=15;
for i=1:num
   for j=1:num
       if (supmean(j,1)<=thre ||supmean(j,1)>=m-thre||supmean(j,2)<=thre||supmean(j,1)>=m-thre)
         dist_edge(i)=dist_edge(i)+(w0*(supmean(i,1)-supmean(j,1))^2+w0*(supmean(i,2)-supmean(j,2))^2+(supmean(i,3)-supmean(j,3))^2+(supmean(i,4)-supmean(j,4))^2+(supmean(i,5)-supmean(j,5))^2)^0.5;
     end
   end
end
%归一化
dist_min=min(dist_edge);
dist_max=max(dist_edge);
for i=1:num
    dist_edge(i)=(dist_edge(i)-dist_min)*255/(dist_max-dist_min);
end
dist_edge=uint8(dist_edge);
im_edge=zeros(300,300);
for i=1:m
    for j=1:n
        im_edge(i,j)=dist_edge(label(i,j));
    end
end
im_edge=uint8(im_edge);

%局部

sa=ones(num,1);
w0=0.12;
w=0.18;
radius=20;
for i=1:num
    numerator=0;
    denominator=0;
    for j=1:num
       dist_ij=((supmean(i,1)-supmean(j,1))^2+(supmean(i,2)-supmean(j,2))^2);
       if i~=j
       if dist_ij<=radius^2
         dist_local=(w0*dist_ij+(supmean(i,3)-supmean(j,3))^2+(supmean(i,4)-supmean(j,4))^2+(supmean(i,5)-supmean(j,5))^2)^0.5;
         numerator=numerator+exp(-w*dist_local)*dist_all(j);
         denominator=denominator+exp(-w*dist_local);
       end
       end
    end
   sa(i)=numerator./denominator;
end
sa_max=max(sa);
sa_min=min(sa);
for i=1:num
    sa(i)=(sa(i)-sa_min)*255/(sa_max-sa_min);
end
sa=uint8(sa);
im_local=zeros(300,300);
for i=1:m
    for j=1:n
        im_local(i,j)=sa(label(i,j));
    end
end
im_local=uint8(im_local);

%显示图片 
subplot(321),imshow(I);title('Original Map');
subplot(322),imshow(imoverlay(IS,BW,'cyan'),'InitialMagnification',100);title('Superpixels Map');
supingary=rgb2gray(supim);
subplot(323),imshow(supim);title('Superixels Homogeneous Color Filling Map');
subplot(324),imshow(im_all,'Colormap',jet(255));title('In All Superpixels');
subplot(3,2,5),imshow(im_edge,'Colormap',jet(255));title('In Edge Superpixels');
subplot(3,2,6),imshow(im_local,'Colormap',jet(255));title('In Local Superpixels');

运行结果:

(显著性采用伪彩色处理)


(未采用伪彩色处理)

可见,超像素点的显著性越强,其颜色越白(橙红色),而显著性低的区域,则趋向于灰黑(蓝)色。

目标检测YOLO实战应用案例100讲-SAR图像多尺度舰船目标检测(续) 在初始超像素生成阶段,经过多次迭代后超像素的个数会比初始设定的K值 略多一点。设置过小的 K虽然像素聚类速度快,但容易出现图像过分割,不能把背景和舰船目标准确划分到不同的超像素,得到的超像素精度较低;基于上述问题,为了解决由手动设置K参数导致的同质区域过分割问题加入 了相似超像素聚合阶段,利用舰船目标SAR图像特征中的纹理特征,设计了超像 素聚合准则,通过多向灰度共生矩阵进行纹理相似判决,从而将具有相似纹理特征 的同质超像素合并,进一步得到更加贴合目标轮廓的完整的超像素,示意图如图3- 7所示。 阅读详情

相关推荐

1、计算机视觉中的特征提取与图像处理:探索新技术与应用

本文介绍了《计算机视觉中的特征提取与图像处理》第四版的核心内容,涵盖从经典图像处理技术到前沿深度学习方法的演进。书中重点探讨了特征提取的理论基础与实现,包括滤波、边缘检测、形状分析、区域分割以及时空技术,并新增了Python支持与深度学习章节。通过实际代码示例和应用案例,展示了技术在医学图像分析、机器人视觉和生物识别等领域的广泛应用。本书旨在为读者提供系统化的知识框架,推动计算机视觉技术的学习与创新。

ansible6ops的博客 54

基于超像素生成的图片数据预测生成显著性检测(1)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录题目一、思路二、基本步骤1.导入图片并压缩2.对压缩后的图片进行超像素分割3.建立一个超像素个数*9的矩阵4.生成带有标签的矩形框图片总结 题目 基于超像素生成的图片数据,进行网络搭建,并预测生成显著性区域 提示:以下是本篇文章正文内容,下面案例可供参考 一、思路 对于每张超像素分割的图片 生成刚好能框住超像素点的矩形框 生成稍大一点的矩形框框住每个超像素点(大约大30%~50%) 对于矩形框在,重新编排尺寸(50,5

m0_45171384的博客 929

显著区域和非显著区域特征提取Matlab实现

在图像处理和计算机视觉中,显著区域和非显著区域的提取是一项非常重要的任务。在本文中,我们将介绍如何使用Matlab实现显著区域和非显著区域的提取,并提供相应的源代码。与显著区域相反,非显著区域指的是与其他区域相似度较高,没有明显差异的区域。基于颜色特征的显著区域提取方法通常是通过比较像素的颜色值,找出与其他像素明显不同的像素作为显著区域。在图像领域中,傅里叶变换是一种重要的方法,它可以将时域信号转换为频域信号,我们可以利用它来提取图像的频域特征,进而实现显著区域的提取。1.1 基于颜色特征的显著区域提取。

持续更新 523

python实现基于超像素距离的图像显著性检测

python实现基于超像素距离的图像显著性检测

m0_45171384的博客 2210

实现图像显著性检测Matlab代码分享

该代码实现了基于上下文意识的图像显著性检测算法,输入为待检测的图像,输出为显著性检测结果。图像显著性检测是计算机视觉领域的一项重要任务,它可以帮助人们快速了解图像中最重要、最有吸引力的区域。本文将介绍一种基于上下文意识的图像显著性检测方法,并分享对应的Matlab源代码。通过这种基于上下文意识的方法,得到的显著性检测结果更具可靠性和准确性,适用于计算机视觉中的很多应用场景。图像显著性检测方法涵盖了很多种算法,其中基于上下文意识的方法最近备受关注。基于上下文意识实现图像显著性检测的Matlab代码。

ByteWhiz的博客 501

Matlab版SLIC超像素分割工具包:一键运行,含参数对比效果图与全流程脚本

直接在Matlab 2019a中运行就能出结果的SLIC超像素分割方案,不依赖任何额外工具箱。核心包含SLIC_main.m主算法函数,配合EnforceLabelC.m做标签一致性优化、DrawContoursAroundSegments_EX.m绘制清晰分割轮廓、DeSample.m支持图像下采样预处理,以及整合调用逻辑的PerformSuperpixelSLIC.m主脚本。自带原始测试图bee.jpg,输出4组不同参数(如超像素数量、紧凑度)下的分割效果——运行结果1.jpg到运行结果4.jpg,直观

pz890123456的博客 193

基于超像素和马尔科夫链的显著性区域检测算法

显著性检测算法常通过计算像素之间的差异来确定显著性,但是对像素的选取通常是固定的,容易忽略图像中物体的边界信息,导致最终检测结果中目标的边界比较模糊。 基于超像素和马尔科夫链的显著性区域检测算法,将图像分割成若干个超像素,用Wasserstein距离衡量超像素之间的颜色、方向和位置的差异来建立马尔科夫链,将显著性检测问题转换成马尔可夫链上的随机游走问题,使用它的平稳分布作为图像的显著度。 1、...

houxiaogang05 2106

ICIP 2010 MSSS算法解析:多尺度谱空间显著性检测原理与复现

显著性检测是计算机视觉的基础任务,旨在模拟人眼视觉注意机制,自动定位图像中最吸引人的区域。其核心原理在于计算图像区域的局部与全局对比度,通过特征差异来量化视觉突出性。这一技术对于图像理解、目标检测和图像编辑等应用具有重要价值。在深度学习兴起之前,基于手工特征的对比度模型是主流方法,其中多尺度分析和特征融合是关键。本文聚焦于ICIP 2010提出的MSSS(Multi-Scale Saliency based on Spectral and Spatial features)算法,该算法是谱空间特征融合与多尺

weixin_26824299的博客 340

显著性检测 视觉注意机制 超像素分割

https://mmcheng.net/bing/ BING: Binarized Normed Gradients for Objectness Estimation at 300fps 概述 视觉显著性检测(Visual saliency detection)指通过智能算法模拟人的视觉特点,提取图像中的显著区域(即人类感兴趣的区域)。 视觉注意机制(Visual Attention Mechanism,VA),即面对一个场景时,人类自动地对感兴趣区域进行处理而选择性地忽略不感兴趣区域,这些人们感兴趣区域

qq_35608277的博客 3923

简单图像显著性特征提取matlab代码

简单图像显著性特征提取matlab代码,代码仅有几行,很容易实现,效果比较明显。

MATLAB数据可视化:pcolor函数从入门到精通(附colormap调色秘籍)

本文深入解析MATLAB中pcolor函数的数据可视化应用,从核心机制、坐标网格指定到常见陷阱规避。重点揭秘colormap调色秘籍,涵盖内置色系选用原则、个性化定制方法及高级渲染技巧,助你创作出信息准确、视觉出色的专业图表,精通从数据到出版级图表的全流程。

kafka6courier的博客 247

特征点最小凸包 matlab,一种基于对比度与角点最小凸包的显著性检测方法

一种基于对比度与角点最小凸包的显著性检测方法【专利摘要】本发明公开一种基于对比度与角点最小凸包的显著性检测方法。首先根据超像素的全局对比计算全局显著图,然后使用中心—周围算子计算局部显著图,最后根据Harris角点的最小凸包估计主要目标的位置与大小过滤到背景中部分区域的干扰,使得主要目标得以突出。【专利说明】一种基于对比度与角点最小凸包的显著性检测方法【技术领域】[0001]本发明涉及一种利用对比...

weixin_39881155的博客 260

PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

前言 原理简介 输入参数准备 1 objectPoints特征点世界坐标 2 imagePoints特征点在摄像头下的像素点坐标 3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下的坐标 2求相机在世界坐标中的坐标 3效果求解相机在世界坐标系下的坐标点 4求解代码1.前言  很多时候,当我们利用单目相机获取图像时,往往只能获取图像中

cocoaqin的博客 5万+

SLIC超像素算法

原文 https://blog.youkuaiyun.com/zhj_matlab/article/details/52986700 前述 最近在看显著性检测,发现很多算法的基础是超像素分割,而正在看的Saliency Optimization from Robust B...

学习自由 2710

AI大模型实战——模型测评:如何评估大模型的表现

大模型评测体系解析:从数据集到基准测试 本文系统梳理了大模型评测的关键要素。在数据集方面,重点介绍了C-Eval等中文评估套件,强调数据质量需通过人工验证保证。评测维度涵盖自然语言理解、知识推理、代码生成等核心能力。基准测试作为标准化评估方法,Glue、SuperClue等平台提供了公平比较的依据。文章指出厂商自评榜单存在水分问题,建议关注第三方评测。同时解析了少样本和零样本两种prompt模式的应用场景差异。最后解释了"SOTA"这一术语在描述模型最优性能时的应用价值。整体呈现了大模型

小志的博客 897

告别迷茫!用C#和Windows.Devices.Bluetooth搞定BLE设备连接与数据收发(附完整代码)

本文详细介绍了如何使用C#和Windows.Devices.Bluetooth命名空间实现BLE设备连接与数据收发。从开发环境配置到设备扫描、服务发现、数据通信及资源管理,提供完整代码示例和实战技巧,帮助开发者快速掌握低功耗蓝牙开发,解决连接稳定性和异常处理等常见问题。

weixin_29248653的博客 506

使用光流法进行视频显著性检测(Matlab)(上)

##由于作者比较菜就使用了别人的代码做了点改进和实验原始视频(bmp序列):(猴子和狗进行了友好的握手之后,猴子对狗挥手道别,狗目送猴离去)难点:1.画质差 2.镜头晃动 3.背景复杂首先,使用的是https://www.cnblogs.com/tiandsp/archive/2012/07/16/2593883.html里使用的HSoptflow.m函数:function [us,vs] = H...

Type真是太帅了 4526

如何使用AKShare作为OpenBB的数据源

`openbb_akshare`项目是 OpenBB 的数据源扩展。可以用于查询A股和港股数据

FinAnalyzer金融分析工具 3196

【显著图】基于多尺度图结构实现显著图计算附matlab源码

In the fifield of saliency detection, many graph-based algorithms use boundary pixels as background seeds to estimate the background and foreground saliency,which leads to signifificant errors in some of pictures. In addition, local context with high contr

matlab_dingdang的博客 286

【Burp入门第二篇】Chrome配置BurpSuite代理教程

1、配置Burp代理为127.0.0.1:80802、扩展商店添加插件switchyomega,修改服务器和端口为下图:3、打开代理,选择刚才添加的代理

等风来 8368

基于Simulink的BCH码编解码仿真建模示例

BCH码是一类循环码,能够纠正一定数量的随机错误。灵活性:可以根据需要选择不同的码长和纠错能力。高效性:适用于短码长和中等码长的场景,广泛用于卫星通信、存储系统等。实现简单:编码和解码过程可以通过硬件或软件高效实现。在本示例中,我们将使用MATLAB/Simulink中的和模块来完成BCH码的编解码操作,并通过仿真验证其误码率(BER)性能。通过本指南,我们介绍了如何基于Simulink搭建一个BCH码的编解码模型,并进行了仿真以验证其性能。背景介绍:理解BCH码的基本原理及其在通信系统中的应用。

xiaoheshang_123的博客 191

目标检测毕业设计选题推荐合集

目标检测毕业设计选题推荐合集 选题合集涵盖了管理系统、小程序、深度学习、机器学习、算法、人工智能、大数据、网络安全、嵌入式、推荐系统、目标检测等多个热门领域。对于计算机专业、软件工程专业、人工智能专业、通信工程专业的毕业生而言,选择一个合适的毕业设计选题至关重要。在这个毕业设计选题合集中,我们精心收集了各种有趣且具有挑战性的选题,旨在帮助学生们在毕业设计中展现他们的技术实力和创新能力。不论是对于对深度学习技术感兴趣的同学,还是希望探索机器学习、算法或人工智能的领域的同学,本合集都能为您提供丰富的选题资源。

2301_79555157的博客 1137

Qt:一个强大而灵活的跨平台应用程序开发框架

代码示例中的源代码是简单的示例,用于演示Qt框架的一些基本特性。实际应用中,开发人员可以根据自己的需求和项目要求,使用Qt框架提供的丰富功能和组件进行开发。在Qt的官方文档和示例代码中,您可以找到更多详细的教程和示例,以帮助您更好地理解和使用Qt框架。它提供了丰富的工具和功能,支持跨多个平台进行开发,并具有高度的可定制性和灵活性。它提供了丰富的工具和功能,使得开发人员能够创建高性能、可扩展和易于维护的应用程序。下面将详细介绍Qt框架的优点,并提供一些相关的源代码示例。

CodeVorter的博客 866

机器学习 深度学习毕业设计选题合集 毕设开题指导

毕业设计选题合集涵盖了深度学习、机器学习、算法、人工智能、大数据、信息安全、推荐系统、目标检测等多个热门领域。对于计算机专业、软件工程专业、人工智能专业、大数据专业的毕业生而言,毕业设计选题至关重要。对深度学习技术、机器学习、算法或人工智能等领域感兴趣的同学,都能提供选题资源和灵感。

2301_79555157的博客 529

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

简单图像显著性特征提取matlab实现,简单的图像显著性区域特征提取方法-----opencv实现LC,AC,FT...

https://blog.youkuaiyun.com/cai13160674275/article/details/72991049?locationNum=7&fps=1上文讲了几种简单的方法,显著性检测就是把一幅图像中最吸引人注意的部分提取出来。我用opencv重写了LC,AC,FT三种算法,代码和效果如下:1.,后面的方法其实大概都是基于这个实现的,代码样子差不多LC思路就是利用对某个像素点累...

weixin_42525632的博客 1618

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【信号处理】显著性检验的小波相干性附matlab实现

小波相干性是一种用于分析非平稳时间序列之间相干关系的强大工具。然而,在实际应用中,确定小波相干性的显著性至关重要,以避免虚假阳性结果。本文介绍了显著性检验小波相干性的方法,包括蒙特卡罗模拟和相位随机化。

m0_57702748的博客 1906

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 使用Apriori实现蔬菜价格涨跌关联分析
下一篇: 使用Fisher线性分类器实现人脸判别的二分类问题和多分类问题(Matlab)
Type真是太帅了
博客等级 码龄10年 2303粉丝 112原创
评论 34
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值