請問超像素(Superpixel)的大致原理?
最近在看顯著性檢測(Saliency Detection)的論文,有點好奇。麻煩大神們簡單介紹下吧。
注意不是HTC的UltraPixel技術。
超像素的原理?
超像素就是把一幅原本是像素級(pixel-level)的圖,劃分成區域級(district-level)的圖。
內涵?
應該算是一種對基本信息進行的抽象吧。
超像素分割屬於圖像分割(image segmentation),再細化應該屬於過分割(over segmentation)。
你對一幅圖像進行超像素分割,分割之後,你得到許多大小不一的區域,你可以從這些區域中提取出有效的信息,比如顏色直方圖、紋理信息。比如你有一個人,你可以對這個人的圖像進行超像素分割,進而通過對每個小區域的特徵提取,辨識出這些區域是處於人體的哪個部分(頭部、肩部,腿部),進而建立人體的關節圖像。
另外,如果你要用圖論的方法來分離前景背景。如果這幅圖的大小為480 * 640,那麼你建立的圖(graph)有480640個節點。如果你預先對這幅圖像使用超像素分割,將其分割為1000個超像素,那麼你建立的圖只有1000個節點。大大提升了計算速度。
我讀過幾篇關於超像素分割的論文,最有趣直觀並且帶有源代碼(帶著良心)的是SLIC Superpixel,使用K-means的聚類方法,分割的效果很好。
SLIC Superpixels Compared to State-of-the-art Superpixel Methods另外,OpenCV3中實現的超像素分割的演算法是SEEDS。
mvdblive.orgSEEDS的速度比SLIC快些,paper寫的也是有理有據,令人信服。空閑的話可以讀讀看。
頂 @Pan Ni .
去年研究了大半年的Saliency Detection,其中這篇CVPR2014的論文(有的狼友可能沒有下載的渠道所以沒放的IEEE Xplore的鏈接 http://research.microsoft.com/en-US/people/yichenw/cvpr14_saliencyoptimization.pdf )中的某一步用到了Superpixel.超像素有多種方法,自己用MindManager做了個大致總結:超像素其實不是一個理論,所以沒什麼原理,它只是一個概念,最早是任曉峰2003年的一篇論文提出的。概念就是把圖像分割成很多小塊,然後可以把這一整個塊當成一個像素來處理,每一小塊就是超像素,這樣處理有一些便捷,比如數據點數減少,或者這一塊有圖像語義,利於後續其他應用。但其本質上仍是是圖像分割。可能需要了解一下圖像分割這一細分領域,不過概念依然很簡單。
就是將圖像過分割成一系列子區域,每個子區域內部之間具有某個特徵具有很強的一致性。例如,每個子區域的灰度差不多。當然,超像素還要求子區域形狀盡量規則等。
對圖像用SLIC進行超像素分割以後得到的每個超像素區域具體是怎樣界定的?程序當中具體在哪一塊指出了這塊區域的範圍和大小?
超像素的大小如何選取呢?有沒有文章專門研究大小的選取,類似討論k-means的k如何選取。
請問SLIC 與 空間金字塔分層超像素有什麼區別呢?
推薦閱讀:
※如何將下圖中孔的區域精確的找出來?用圖像處理的方法
※萌新初入手圖像處理,想知道feature map 和activation map分別是指什麼?
※當前主流的圖像分割研究方向都有哪些?
※幾乎無C/C++基礎的前提下,如何去學習OpenCV?
※運算量很大的圖像處理演算法有什麼意義呢?