1.Bounding Box
推荐LabelImg:https://github.com/tzutalin/labelImg 点击打开链接
在ubantu下配置使用很方便,最后生成文件.xml,目前不能导出标注后bbox的图片格式文件。
2.图片分割 segmentation
**推荐labelme:https://github.com/wkentaro/labelme 点击打开链接
画多边形,像素级别的图像标注,标注后生成 .json.
**https://github.com/lzx1413/LabelImgTool 点击打开链接
这个图像标注工具和LabelImg很相似,在效果图和TODO list中列出了 instance segmentation,可以期待一下。
3. MATLAB Training Image Labeler工具的使用
**我使用的版本的是MATLAB2016a,
a.. 在MATLAB命令行窗口输入 trainingImageLabeler
b.. 点击Add Images 和 ROI 就可以对感兴趣的区域标注了。
c.. 点击Export ROIs -> ok 默认即可。 这会在当前的Workspace建立一个名为positiveinstances的变量,存储着ROI信息。
d.. save session 之后会输出一个mat文件,内部存储当前session加载的所有图像路径和ROI位置。
e.. 如果需要存储切割的ROI区域,可以使用如下代码 (来源于:http://blog.csdn.net/tsyccnh/article/details/50812632)
session_folder = 'C:\Users\Qing\Desktop';%session目录 output_folder = 'C:\Users\Qing\Desktop';%输出目录 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fileFolder=fullfile(session_folder); dirOutput=dir(fullfile(fileFolder,'*.mat')); fileNames={dirOutput.name}; for fileName = fileNames file_full_name = strcat(session_folder,'\',fileName); Save_Raw_Samples_ROIs(char(file_full_name),output_folder); end
Save_Raw_Samples_ROIs() :
%作者:史丹利复合田 %日期:2016年3月 %函数说明:读取通过MATLAB Training Image标记并保存的labelingSession数据,将 %这些标记的ROI区域转换成bmp图片并存储。图片的名称采用了时间+序号的存储方式, %所以多次读取这一函数并将结果存入同一文件夹也不会造成命名冲突 %示例调用方式 Save_Raw_Samples_ROIs('E:\TSY\Code\labelingSession.mat','G:\Samples\2016-3-5'); %************************************************************************** %第一个参数:通过MATLAB Training Image %Labeler工具导出的labelingSession数据,为mat格式,这里只需输入其全路径即可,如'C:\labelingSession.mat' %第二个参数:为待导出的文件存储的文件夹,如'G:\Samples\2016-3-1' %所有标记过的图像从0开始索引为文件名进行存储 function Save_Raw_Samples_ROIs(labelingsession_data_path,output_path) roi_info = load(labelingsession_data_path); image_counts = size(roi_info.labelingSession.ImageSet.ROIBoundingBoxes,2);%struct结构与普通矩阵的索引方式不同,第一个为列,第二个为行 roi_index = 0; pause(1);%延时1s,确保不会出现重命名 current_time = datestr(now,'yyyy-mm-dd-HH-MM-SS_'); if ~isdir(output_path) %判断路径是否存在 mkdir(output_path); end for i = 1:image_counts%对每张图依次处理,提取ROI区域 image_info = roi_info.labelingSession.ImageSet.ROIBoundingBoxes(i); image = imread(image_info.imageFilename); box_rows = size(image_info.objectBoundingBoxes,1); for j = 1:box_rows%对每张图的所有ROI区域进行提取 box =image_info.objectBoundingBoxes(j,:); cropped_roi = imcrop(image,box); %imshow(cropped_roi); image_full_name = strcat(output_path,'\',current_time,num2str(roi_index),'.bmp'); imwrite(cropped_roi,image_full_name); roi_index=roi_index + 1; end end end执行代码后有效果图如下: