alt text http://parasu516.googlepages.com/Image1.gif黑白圖像處理
在上圖中我想,以紀念圈的邊緣用紅色 像這樣
alt text http://parasu516.googlepages.com/Image.gif
我不知道應該如何進行,任何幫助/建議將不勝感激...
alt text http://parasu516.googlepages.com/Image1.gif黑白圖像處理
在上圖中我想,以紀念圈的邊緣用紅色 像這樣
alt text http://parasu516.googlepages.com/Image.gif
我不知道應該如何進行,任何幫助/建議將不勝感激...
只要您使用像您提供的二進制圖像一樣的工作,形態過濾就會很好。擴大圖像,然後減去原稿。
alt text http://img29.imageshack.us/img29/1420/morphf.png
這裏是一個MATLAB例如:
lImage = zeros(19, 19, 3);
lImage(7:13, 7:13, :) = repmat(...
[0 0 1 1 1 0 0; ...
0 1 1 1 1 1 0; ...
1 1 1 1 1 1 1; ...
1 1 1 1 1 1 1; ...
1 1 1 1 1 1 1; ...
0 1 1 1 1 1 0; ...
0 0 1 1 1 0 0;], [1 1 3]);
figure; imshow(lImage);
lOutline = imdilate(lImage, strel('disk', 1)) - lImage;
lOutline(:, :, 2:3) = 0;
figure; imshow(lImage + lOutline);
快速和骯髒的解決方案。如果顏色發生變化,則將像素逐像素地運行,只是將像素繪製爲紅色。
PS:請注意,這可能不是一個方形的工作,除非你做同樣的垂直和水平
這很可能是解決這個有限問題的最快解決方案。這個問題沒有必要使用更強大的邊緣檢測器! – 2009-07-08 14:25:55
你在找什麼是邊緣檢測。你可以找到一些資源對谷歌的一般算法:
擊敗了我:) – 2009-07-08 13:40:32
我至少可以點你一些非常整齊的邊緣檢測過濾器的方向: http://www.codeproject.com/KB/GDI-plus/edge_detection.aspx
我想它應該適合你相當不錯
從來沒有做過這樣的事,但對於複雜的圖像處理功能強大的工具是:
http://www.imagemagick.org/script/index.php
很多文檔和示例 - 如果您不打電話給可執行文件,可以使用.NET包裝器。
有趣的問題 - 我假設你的例子中的'白圈'實際上是另一個圖像 - 這意味着你不是自己畫圓圈?
如果是這樣,您可能會掃描所有像素以找到至少在其一側具有黑色(4個方向或8個包括拐角)的白色像素。如果它匹配,則將其交換爲紅色。如果沒有,那就忽略它。
我懷疑這是做這件事的最好方法,但如果它只是黑白的,這可能會讓你開始。
你幾乎可以肯定地想要使用Canny Edge Detector,這應該能夠很容易地做到這一點。 My company的產品線只包含這樣的一個工具,而這是運行它的輸出: alt text http://www.plinth.org/_images/image1Output.gif
Canny邊緣檢測器看起來像是過度殺傷,除非他正在處理更復雜的圖像。 – 2009-07-22 02:42:11
有幾種方法。
第一個是: - 你知道有一個圓圈,你需要找到中心在哪裏,半徑是多少。所以你可以使用Hough transformation找到這些,他們用紅色繪製你的圈子。 讀this topic或this one
最終你想要編輯圖像的像素。這個問題已經在這裏被Marc Gravell解答了。
然後,根據您選擇的選項LockBits或GetPixel/SetPixel,您需要循環查看每個像素的顏色值。保持循環,直到你點擊一個白色像素。
一旦你這樣做,檢查周圍的所有方向,如果你找到一個黑色像素,然後顏色,白色像素紅色。這當然是最簡單的答案,並且有方法來優化它,但它會起作用。例如,如果您想將顏色變化限制爲僅四個直接相鄰的像素,則可以,而不是檢查對角線。
邊緣檢測?圖像處理? OpenCV!有lib的C#包裝器。不是「簡單」的解決方案,但你用這個庫獲得的任何exp是一個好的簡歷構建器。如果你的公司正在做圖像處理,他們可能已經在使用它。
非常感謝REFFERENCE安東,還是讓我來試試這些 – 2009-07-08 13:41:02