selective search实现步骤
- 使用一种图分割手段,将图像分割成小区域 (2k~3k 个)
- 查看现有小区域,按照相似度合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域
图像分割
http://cs.brown.edu/~pff/papers/seg-ijcv.pdf是2004年由Felzenszwalb发表在IJCV上的一篇文章。主要介绍了基于图表示的图像分割。并且提出了一种基于贪心选择的图像分割方法,此方法能够考虑到全局特征。根据距离度量方式的不同,此算法有两种具体的实现形式。结果表明算法的运行时间接近于线性(相对于图中边的个数来说)。此算法的更重要的特性在于,在特征变化较小的情况下,对细节的重视性大于特征变化较大时的情况
算法过程
测试图片大小:w:h = 960:640
- 分割成小区域
Felzenszwalb算法直接调用的是skimage中的实现
img = io.imread('./image/breakfast.jpg')
#img = io.imread('1.png')
# perform selective search
im_mask = skimage.segmentation.felzenszwalb(
skimage.util.img_as_float(img), scale=500, sigma=0.9,
min_size=10)
skimage.util.img_as_float(img)会将图片像素值从int8转换成float32,扩大像素值的数字表示范围,能够表示更多的颜色。
例如在上述实现中,(640, 960, 3)的原图像,经过分割函数felzenszwalb的处理,输出大小为(640, 960)的im_mask,像素值的范围是[0,385]而不是[0, 255]
在im_mask中,同一块颜色值用同一个像素值表示,总共386个不同的颜色区域;合并相同像素值之后,可以得到386个物体区域;下图是386个颜色区域的个数(大小)统计,和相同颜色区域合并后得到的box图
- 合并区域
遍历以上所有box框,得到每一个rect box框区域对应的相邻区域,邻居的数据存储结构为
(a,b)
(a,c)
(a,g)
(b,e)
(b,f)
...
计算方法也比较简单,查看两个框是否有交集即可
def _extract_neighbours(regions):
def intersect(a, b):
if (a["min_x"] < b["min_x"] < a["max_x"]
and a["min_y"] < b["min_y"] < a["max_y"]) or (
a["min_x"] < b["max_x"] < a["max_x"]
and a["min_y"] < b["max_y"] < a["max_y"]) or (
a["min_x"] < b["min_x"] < a["max_x"]
and a["min_y"] < b["max_y"] < a["max_y"]) or (
a["min_x"] < b["max_x"] < a["max_x"]
and a["min_y"] < b["min_y"] < a["max_y"]):
return True
return False
R = list(regions.items())
neighbours = []
for cur, a in enumerate(R[:-1]):
for b in R[cur + 1:]:
if intersect(a[1], b[1]):
neighbours.append((a, b))
return neighbours
如果两个区域有交叉,则分别计算两个交叉区域图形的颜色相似度,纹理相似度,大小像素点和形状相似度,四个相似度按照一定的比重计算,得到最终两个交叉区域是否合并,合并后的结果为
如此就得到了,最总我们需要截取的区域
参考文档
https://github.com/AlpacaDB/selectivesearch
https://blog.csdn.net/aiaiai010101/article/details/64128380
https://zhuanlan.zhihu.com/p/52379393
https://zhuanlan.zhihu.com/p/36184131
https://learnopencv.com/selective-search-for-object-detection-cpp-python/
https://blog.51cto.com/spikeking/1388049
https://blog.csdn.net/weixin_39679367/article/details/81015238