Graph Cut Image Segmentation with A Center ( Star Shape Prior )
在找某種 Tool 的過程中發現這個有趣的工具: Segmentation Graph Cut
它事實上是這篇 Paper 內容的實作:
Olga Veksler, "Star Shape Prior for Graph-Cut Image Segmentation," European Conference on Computer Vision, pp.454-467, 2008
雖然 Google Code 頁面上沒有明寫, 不過猜 Project Owner 就是作者本人. 因為 Tool 裡面包含的 Samples 跟 Paper 內容的範例圖都一樣, 同時如果你從 SVN 上 Check-out, 而不是只抓 Binary 的話, 會發現 Repository 裡面還有兩篇相關的 Paper PDF, 如果不是自己有版權, 應該不至於敢直接放到 Repository 裡面吧.
Anyway, 這篇 Paper 跟這個 Tool 的重點很單純, 就是要把所謂的 Star Shape 加到利用 Graph Cut 作 Image Segmentation 的方法中. 至於所謂的 Star Shape, 採用 Paper 中的定義:
A star shape is defined with respect to a center point c. An object has a star shape if for any point p inside the object, all points on the straight line between the center c and p also lie inside the object.
如果用圖來舉例解釋的話, 大概是像下面的 (a) 不管怎樣裡面的任一點都可以做為 Center C, (b) 只有部分的點可以做為 Center C, 因為有些點無法讓 P 的條件符合, (c) 不管哪裡都不存在 Center C 可以讓 P 的條件符合.

其中 (a) (b) 的情況都符合 Star Shape 的定義.
工具的 Binary Release 本身需要 Visual Studio 2008 的一些 Libraries, 我在 Windows 7 沒法安裝, 直接從 SVN 抓下來 SRC, 裡面有 C++ Code ( 尚不清楚實際用途 ) 跟作為 GUI 的 Python Code. 直接利用 GUI.py 執行極可.
請注意會需要 wxPython 跟 Psyco, 沒有的話會要安裝才能繼續執行.
工具目的單純所以容易操作. 載入圖片後利用滑鼠在圖片上指定 C 跟 P. 左鍵 Click 兩下會出現藍色點是 C, 一下的話會出現黃色點是 P.

我本來以為會以 P 作為切割邊線的決定條件的, 但看來不是這樣, 像上圖那樣標記, 最後還是會抓到整朵花 (右下的紅框是結果, 是我額外貼上去的, 工具本身是會呼叫你的看圖程式去開結果圖). 但是如果舉個極端一點的例子, 像是這樣:

基本上還是會割到 Boundary 為止, 我猜跟裡面用到的 Graph Cut 演算法有關. 不過我的 Image Processing 只有到基本的傅立葉程度 = = , 這個就沒法猜了.
當然 Title 寫 With A Center 是有理由的...
在一般的情況下, 只要標記上 C, 不用 P 也是可以抓到, 像是這樣:

而且運算時間算是蠻快的, 扣掉開啟看圖程式的時間, 可以直接把結果接到工具畫面輸出的話, 應該是幾乎到無感的程度吧.
很有趣, 改天有空再來從 Python GUI 研究看看是不是可以直接使用裡面的 Kernel Function, 接到別的程式上.
晚上9:10 | 標籤: image processing, python, Software Tool | 0 Comments
MyHeritage 人臉辨識
MyHeritage 是一個可以讓你利用人像照片建立 family tree 的 web service, 以及可以利用照片比對不同 family tree 之間長的相似的人, 藉此建立關係. 其原始想法應該是啟自 Geni 這個始祖的 service, 但是結合了人臉辨識的想法. 雖然說長的有點像跟血緣關係之間我覺得是沒有直接的邏輯關係啦 = = , 或者說至少目前的人臉比對技術還沒有到那種程度吧. 所以還是當作建 family tree 的 service 外加 for fun 的人臉辨識就好.
既然是 for fun, 當然要試一下. 以找出同一個人為驗證的標準, 首先用了手邊的一張近期廣末涼子的正面照片去作比對, 結果在第四相似照片有找到, 相似度是 90% 左右. 這邊也可以看出跟髮型, 髮色無關. 另外挑選出的照片除了第三張不知道是哪位韓國人, 其他的從眉毛, 眼睛以及笑的嘴型可以看出一些相似度.再試了一張跟早期短髮時期比較像的. 這次第一相似就找到了. 應該也是五官影響大一點. 第六張的 Camilla Belle 那張照片好醜, 本人是很漂亮的, 在去年上映的重拍電影 When a Stranger Calls 有獨挑大樑的演出.
如果用角度稍微偏的, 例如 25 度左右側臉的, 或是臉部有往左右旋轉一個角度的, 出來的結果就比較不準, 這應該跟 image base 裡面的既有 images 有關. 下面兩個嘗試都是完全沒找到. 從下面的第一個嘗試可以看出來側臉會被考慮進去, 換句話說輪廓形狀也是進行比對的因素之一, 所以找出來的都是側臉的. 第二個嘗試應該還是跟五官比對的關係度大一點, 不過第五張出現的蔡某人就不知道是怎麼一回事了, 感覺上跟其他的照片在五官表現上的差異度蠻大的.最後比較一下一樣的照片用彩色的跟灰階的兩種去比對, 結果是否會相似 ? 就拿第二張的最高相似度來嘗試, 結果前半段的相似度是一樣的, 但是後面就有些變化. 所以色調應該也是有些影響, 但是主要特徵的辨識應該可以說是不太受色調的影響.
另外我也用了一樣是廣末涼子的素描畫像, 以及跟廣末涼子無關的一隻狗臉照片去嘗試, 結果發現會因為找不到特徵所以無法比對, 所以基本上這個 service 的檢查算是有考慮這些點, 會先判斷是否為系統可接受的人臉照片.
除了單人的比對, MyHeritage 也可以接受一張照片裡有多個人臉, 他會嘗試把每一個都辨認出來, 然後自 matching 到相似度高的人臉照片. 不過偶爾還是會找到奇怪的東西就是了, 像是下面這一張, 成功把狗臉踢掉了, 但是右方不該有臉的地方卻找到了臉.(還是說這裡真的有東西 ? 恐怖歐 ~~ )
總地來說,我覺得除了選用的人臉特徵之外, 跟 image base 內有哪些 images 也有相當的關係. 另外上面的比對都是以找出同一個人為驗證的標準, 而不是以演算法得到的相似度, 否則難以從人眼看的觀點作平段.
另外談談黑暗面, 上面稍微有點不自然地出現了蔡某人的照片, 加上最近台灣唱片業的買排名黑箱事件, 很難不讓人聯想到這類應用的黑暗面. 畢竟這一類的應用也算是一種 Search Engine, 會不會同樣也可以利用買廣告的方式, 讓某些特定人士的臉孔比較容易在比對中出現, 進而達到特定的宣傳目的呢 ? 呵呵...
上午9:16 | 標籤: image processing, research, software company, web engineering | 0 Comments
Ascii Generator dotNet
在 SourceForge.net 上看到的 software (official site), 還蠻容易用的, 可輸出不錯的 ascii 轉圖, 可惜彩色部份只支援 XHTML 輸出, 看 developer 的 id 感覺是 UK 的, 沒有為 BBS ascii 著想也是正常 :p , 不過 vt100 的 terminal 應該都支援 coloring 顯示, 還是他的目的就是只有給 web 用的 ?
找了幾張圖試了一下, 感覺還不錯. 不過就跟其他的 ascii tool 一樣, 近看還是會有差, 要在小範圍內顯示高解析度, 實在還是會受限於可用的字元數太少, 某些圖不可能直譯就會清楚, 自動化的 tool 還是難以取代手工的 BBS ascii art.


下午2:12 | 標籤: image processing | 0 Comments