【图像分割】DBSCAN算法超像素分割【含Matlab源码 515期】

本文介绍了如何通过两种方式获取基于Matlab的DBSCAN算法实现的图像分割代码,包括上传资源下载和付费专栏订阅。提供了部分源代码示例,并展示了运行结果。Matlab版本为2014a,还引用了相关学术论文作为理论支持。
摘要由CSDN通过智能技术生成

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【图像分割】基于matlab DBSCAN算法超像素分割【含Matlab源码 515期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab图像处理(初级版)

备注:
点击上面蓝色字体付费专栏Matlab图像处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab图像处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、图像分割简介

理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】

⛄三、部分源代码

%======================================================================
clear all;
close all;
currentFolder = pwd;
addpath(genpath(currentFolder))
addpath(‘code’);
addpath(‘imgs’);
name=‘107072’;
im = imread([name,‘.jpg’]);
post=1;
img = uint8(im);
number_superpixels =500;
tic;
label = DBscan_mex(img,number_superpixels,post);
toc;
SuperpixelSave(label,im,name);
DisplaySuperpixel(label,im,name);
image=rgb2gray(img);
G=imbinarize(image);
B = imresize(G, 0.125);
%% 这是Roberts算子
sourcePic=imread(‘C:\Users\dell\Desktop\Semantic dataset100\Semantic dataset100\ground-truth\3096.png’);
J = imresize(sourcePic, 0.125);
grayPic=mat2gray(J); %转换成灰度图像
[m,n]=size(grayPic);
newGrayPic=grayPic;%为保留图像的边缘一个像素
robertsNum=0; %经roberts算子计算得到的每个像素的值
robertThreshold=0.2; %设定阈值
for j=1:m-1 %进行边界提取
for k=1:n-1
robertsNum = abs(grayPic(j,k)-grayPic(j+1,k+1)) + abs(grayPic(j+1,k)-grayPic(j,k+1));
if(robertsNum > robertThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end
A=imbinarize(newGrayPic);
sum1=0;
sum2=0;
[m,n]=size(A);%lb=length(Y);
%[r,k]=size(B);
for i=1:n
%for q=1:k
for j=1:m
%for p=1:r
while A(i,j)==1
sum2=sum2+1;
if A(i,j)-B(i,j)<2 || A(i,j)-B(i-1,j-1)<2 || A(i,j)-B(i,j-1)<2||…
A(i,j)-B(i-1,j+1)<2|| A(i,j)-B(i+1,j)<2 || A(i,j)-B(i+1,j+1)<2 ||…
A(i,j)-B(i+1,j)<2||A(i,j)-B(i-1,j+1)<2 ||A(i,j)-B(i-1,j)<2
sum1=sum1+1;
end
function DisplaySuperpixel(label,img,name)

[nRows,nCols,~]=size(img);
for m=1:nRows
for n=1:nCols
L=label(m,n);
count=0;
minx=max(m-1,1);
maxx=min(m+1,nRows);
miny=max(n-1,1);
maxy=min(n+1,nCols);
for u=minx:maxx;
for v=miny:maxy
if(label(u,v)~=L)
count=count+1;
end
if(count2)
break;
end
end
if(count
2)
break;
end
end
if(count==2)
img(m,n,:)=0;
end
end
end
figure;
imshow(img);
imwrite(img,[name,‘result.bmp’],‘bmp’)

fid=fopen([name,‘.txt’],‘wt’);%写入文件路径
[m,n]=size(label);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,‘%g\n’,label(i,j));
else
fprintf(fid,‘%g\t’,label(i,j));
end
end

⛄四、运行结果

在这里插入图片描述
在这里插入图片描述

⛄五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]覃晓,覃正优,元昌安,伍永.基于聚类的超像素分割算法研究[J].广西师范学院学报(自然科学版). 2018,35(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值