图像显著性检测ft"/>
matlab 图像显著性检测ft
本代码内容是关于Saliency Detection via Graph-Based Manifold Ranking的算法详解,想要运行此代码还需要一系列的文件,单纯此代码无法演示结果的。
可以在网上搜索完整文件,简单来说就是基本的SLIC小程序,其余的不是必要项。
将数据集直接放入test文件夹中,运行sample或者demo都可以吧,我的是师兄传给我的,跟各位下载的结果应该差别不大。
(为了避免大家浪费时间,这里贴出百度云下载链接,链接:
关注并且私信我发链接
clear all;close all;clc;
addpath('./function/');
%%------------------------设置参数---------------------%%
theta = 0.1; % 控制边缘的权重
alpha = 0.99; % 控制流行排序成本函数两个项的平衡
spnumber = 200; % 超像素的数量
imgRoot = './test/'; % 测试图像的路径
saldir = './saliencymap/'; % 显著性图像的输出路径
supdir = './superpixels/'; % 超像素标签的文件路径
mkdir(supdir);
mkdir(saldir);
imnames = dir([imgRoot '*' 'jpg']);
disp(imnames);
imname = [imgRoot imnames.name];
[input_im,w] = removeframe(imname); %预处理去掉边框
[m,n,k] = size(input_im);
%%----------------------生成超像素--------------------%%
imname = [imname(1:end-4) '.bmp']; %SLIC软件仅支持bmp格式的图片
comm = ['SLICSuperpixelSegmentation' ' ' imname ' ' int2str(20) ' ' int2str(spnumber) ' ' supdir]; %设置启用SLIC.exe前参数
%
system(comm); %启用SLIC.exe,将每一个像素按照超像素的区域分类,同一区域的超像素赋相同的值,值与此区域的颜色亮度无关
spname = [supdir imnames.name(1:end-4) '.dat'];
%超像素标签矩阵
fid = fopen(spname,'r');%fid是文件代号(句柄)
A = fread(fid, m * n, 'uint32'); %fread(fid, N, 'str') N代表读入元素个数, 'str'是格式类型,将此文件顺序读出来,m*n个像素点逐行扫描
A = A+1; %把A变成正整数或逻辑值
B = reshape(A,[n, m]);%将顺序读出的值改为原图像的二维格式
superpixels = B';%B的转置矩阵,转成m*n,从列开始,在同一超像素区域内的像素赋同一值,值仅作为计数用,值为n,表示第n个超像素
fclose(fid);
spnum = max(superpixels
更多推荐
matlab 图像显著性检测ft
发布评论