2009-08-12 157 views
5

我有幾張JPG圖像。其中一些可能在一側或多側上有黑色邊框,我想將其刪除。黑色邊框可能不會圍繞實際圖像 - 有些可能只有底部的邊框(實際圖像在頂部),而有些可能居中(這意味着兩側黑色邊框,但未連接)。更糟的是,這些圖像是JPG壓縮的,因此它們可能不再是完全0,0,0黑色。刪除圖像周圍的黑色邊框

在一個Paint程序中,我會「簡單地」使用Magic Wand工具,但容忍度很低,但我需要在ASP.net中使用C#來完成,而且我不知道這樣做的最佳方式是什麼是。

我應該「掃描」每一行,然後每列(兩個嵌套for循環)找到黑色區域?聽起來有點愚蠢,性能和CPU負載明智。或者GDI +已經有一些魔術棒工具了嗎?

圖像並不是那麼大(最大爲474x474像素),然後緩存,但我需要儘可能降低服務器負載。

任何提示什麼是最愚蠢的做法呢?

回答

4

好像每個邊緣,你可以做這樣的事情:

for each edge: 
    for (i = 0; ; i++) { 
     compute average pixel value along edge row/column + i 
     if (average value > threshold) 
       break; 
    } 
    crop image 
+0

這種做法似乎有點蠻力(二for循環),但它是出奇的快(每張照片小於1毫秒)。感謝與平均顏色值的想法。 – 2009-08-13 17:54:14

+1

圖像處理的可悲事實是,至少在較低的層次上,您必須迭代所有感興趣的像素。此外,如果用戶可以上傳大多數黑色圖像,請對這種方法進行一點小心。也許在允許的邊框尺寸上設置一個上限。 – Eric 2009-08-14 05:23:12