增强超像素连通性函数
来源:互联网 发布:js 中splice方法 编辑:程序博客网 时间:2024/05/22 17:12
增强超像素连通性函数:可以解决--在用SLIC或者mean-shift算法分割后会有连通性差和出现一些未被标记的小区域的问题。
function nlabels= EnforceLabelConnectivity(img_Lab, labels, K)
dx = [-1, 0, 1, 0];
dy = [0, -1, 0, 1];
[m_height, m_width, m_channel] = size(img_Lab);
[M, N] = size(labels);
nlabels = (-1)*ones(M, N);
label = 1;
adjlabel = 1;
xvec = zeros(m_height*m_width, 1);
yvec = zeros(m_height*m_width, 1);
m = 1;
n = 1;
for j = 1: m_height
for k = 1: m_width
%逐点寻找未标记的区域
if (0>nlabels(m, n))
%找到一个新区域后用label标记该区域的起点
nlabels(m, n) = label;
%开始一个新的分割 记录起点坐标
xvec(1, 1) = k;
yvec(1, 1) = j;
%如果起点与某个已知区域相连 用adjlabel记录该区域编号 如果当前区域过小则与相邻区域合并
for i = 1: 4
x = xvec(1, 1)+dx(1, i);
y = yvec(1, 1)+dy(1, i);
if (x>0 && x<=m_width && y>0 && y<=m_height)
if (nlabels(y, x)>0)
adjlabel = nlabels(y, x);
end
end
end
%逐点搜索当前区域的所有点 将当前区域的坐标存到xvec和yvec中 统计区域面积
count = 2;
c = 1;
while (c<=count)
for i = 1: 4
x = xvec(c, 1)+dx(1, i);
y = yvec(c, 1)+dy(1, i);
if (x>0 && x<=m_width && y>0 && y<=m_height)
if (0>nlabels(y, x) && labels(m, n)==labels(y, x))
xvec(count, 1) = x;
yvec(count, 1) = y;
nlabels(y, x) = label;
count = count+1;
end
end
end
c = c+1;
end
%过小的区域与相邻的区域合并
if (count<600)
for c = 1: (count-1)
nlabels(yvec(c, 1), xvec(c, 1)) = adjlabel;
end
%label编号要取消 改为上一个编号重新计数
label = label-1;
end
%标签计数器自加
label = label+1;
%%%%%%%%%%%%%%
end
%主计数器自加
n = n+1;
if (n>m_width)
n = 1;
m = m+1;
end
%%%%%%%%%%%%
end
end
end
阅读全文
0 0
- 增强超像素连通性函数
- opencv像素增强
- 超像素分割
- 超像素分割算法
- 分水岭超像素
- SLIC超像素分割
- 【转载】分水岭超像素
- SLIC超像素分割
- 超像素(Superpixel)理解
- 超像素区域合并
- (superpixel)超像素分割
- SLIC超像素
- 超像素 Superpixel
- SLIC算法 超像素 superpixel
- SLIC超像素生成算法
- 超像素图像分割简述
- SLIC超像素分割详解
- SLIC超像素分割详解
- 《卓有成效的管理者》评语
- SqlMapConfig.xml配置文件---Mybatis学习笔记(七)
- 面试中的一些代码实现
- Hadoop基础知识
- 程序猿(更新*1)
- 增强超像素连通性函数
- 云空间
- 【论文笔记】Convolutional Neural Networks for Sentence Classification
- Js函数的学习
- 20170815阿里电话面试
- 进销存管理系统源码
- java中Bigdecimal数据类型
- Easylogging的封装使用一
- python 函数、函数式编程、变量作用域、函数__doc__属性