Segmentation obtained by thresholding the UCM at certain level
来源:互联网 发布:网络隐私权的法律规定 编辑:程序博客网 时间:2024/06/07 17:57
这篇主要讲如何获得最右边的结果,论文可以参考:
From Contours to Regions: An Empirical Evaluation
Contour Detection and Hierachical Image Segmentation
根据上图,我们可以得到一般的思路,给定原图和其对应的UCM以及某个参数因子,就可以得到我们想要的结果。大致步骤如下:
1、读取某一原图及其对应的UCM
2、设定thresholding
3、根据thresholding,得到某一level的UCM map
4、对该UCM map的所有regions设定label
5、构建一个三通道的RGB矩阵,每个通道都是thresholding对应level的UCM map
6、找到所有UCM map 的label在原图对应的二维坐标
7、在原图基础上,求regions的label对应坐标位置三个通道的像素值,然后求average
8、对RGB对应的三个通道的每个regions赋值相应的average
代码如下:
load('data/101087_ucm2.mat','ucm2');image=imread('data/101087.jpg');%convert ucm to the size of the original imageucm = ucm2(3:2:end, 3:2:end);%get the boundaries of segmentation at scale k in range [0 1]k = 0.4;bdry = (ucm >= k);%get superpixels at scale k without boundaries:labels2 = bwlabel(ucm2 <= k);labels = labels2(2:2:end, 2:2:end);% figure;imshow('data/101087.jpg');% figure;imshow(ucm);% figure;imshow(bdry);% change formattemp=mat2gray(bdry);temp=uint8(temp*255);%set a three channels matrix to save result,all the channel are%identical,etc,temp. The three channel,as we all know, reprents RGBRGB(:,:,1)=temp;RGB(:,:,2)=temp;RGB(:,:,3)=temp;% the number of different label values in labels matrixlabel=unique(labels);for i=1:length(label) [x,y]=find(labels==i); % find the location where labels equal i [m,n]=size([x,y]); %m is the numberi of piexl node of the region sum=zeros(3,1); % make a 3x1 matrix to save the sum value for j=1:m % calculate the sum sum(1,1)=sum(1,1)+double(image(x(j),y(j),1)); sum(2,1)=sum(2,1)+double(image(x(j),y(j),2)); sum(3,1)=sum(3,1)+double(image(x(j),y(j),3)); end %calculate the average average1=round(sum(1,1)/m); average2=round(sum(2,1)/m); average3=round(sum(3,1)/m); for k=1:m % set each channel RGB(x(k),y(k),1)=uint8(average1); RGB(x(k),y(k),2)=uint8(average2); RGB(x(k),y(k),3)=uint8(average3); endend%if you want show the contour,you should need the following code[x2,y2]=find(temp==255);[m2,n2]=size([x2,y2]);for i=1:m2 %set contour for each channel RGB(x2(i),y2(i),1)=255; RGB(x2(i),y2(i),2)=255; RGB(x2(i),y2(i),3)=255;end
该代码中读取原图和UCM,是直接利用伯克利提供的源码BSR的example,可以做相应的修改。
直观图片数据如下:
原图
UCM
某一level的UCM map
没有边界轮廓的结果
有边界轮廓的结果
阅读全文
0 0
- Segmentation obtained by thresholding the UCM at certain level
- The following exceptions are thrown by certain C# operations.
- 2. level set Segmentation(Paper is on the progress)
- Tapestry: Obtained resource by @Inject is NULL
- Thresholding
- Thresholding
- jump to certain part by js
- 论文阅读:Segmentation of teeth in CT volumetric dataset by panoramic projection and variational level se
- A low-level Look at the ASP.NET Architecture
- A low-level Look at the ASP.NET Architecture
- zz - reprint with rework Definining resources at the theme level
- Option to use with setsockopt at the IPPROTO_IP level
- How does OpenGL work at the lowest level
- A low-level Look at the ASP.NET Architecture
- Expressions are not allowed at the top level
- Adptive Thresholding Using the Integral Image
- Adaptive thresholding using the integral image
- qt: The build directory needs to be at the same level as the source directory.
- 什么是ARP协议?
- android 利用数据库实现历史搜索记录功能
- XYNUOJ 1080求和
- 任务计划
- Taxi Fare
- Segmentation obtained by thresholding the UCM at certain level
- [Leetcode] 41, 75, 34
- hdu6147 模拟
- 为什么是装饰模式而不是继承
- python 程序运行时间
- Leetcode Best Time to Buy and Sell Stock
- hdu2391Filthy Rich(动态规划基础)
- idea热部署静态资源无法及时生效
- Python单元测试(doctest和unittest)