簡體   English   中英

銳化圖像中每個 object 的邊框像素

[英]sharpen out border pixels of each object in image

我有一個帶有一些隨機組件的圖像......每個組件的邊框都有一些模糊的像素,即......看截圖帶有模糊像素的邊界

所以使用 OpenCv 和 python,我希望這張圖片非常清晰......即邊緣沒有模糊像素......如下圖所示

在此處輸入圖像描述

這是完整的圖像供您參考...... 在此處輸入圖像描述

為了對錯誤有一定的容忍度,這種行為可以通過使用 k-means 算法來實現。 該算法可用於構建具有相似顏色的像素簇。 OpenCV k-means實現提供了許多參數來調整以獲得所需的結果。 您可以使用以下代碼片段開始:

import cv2
import numpy as np

img = cv2.imread("/path/to/img.png")
Z = img.reshape((-1, 3))
Z = np.float32(Z)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 2
ret, label, center = cv2.kmeans(Z, K, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)

center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img.shape))

cv2.imwrite("./output.png", res2)

上面的代碼將為示例圖像生成以下結果:

在此處輸入圖像描述

但是這段代碼可能不適用於較大的圖像(即使在通過 K=5 之后),這是因為我們依靠 K-means 通過隨機采樣來挑選種子。 我們可以選擇傳入種子 colors 以查找代碼中黃色、淺綠色、深綠色、棕色和藍色的 BGR 值。 將這些 BGR 值作為種子提供后,您可以獲得更好的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM