iT邦幫忙

1

如何把圖像中的 【不正常扭曲】處 標示 出來

希望最後可以對 【不正常扭曲】 的地方標示出來,
如下圖 :

https://ithelp.ithome.com.tw/upload/images/20210305/20135660tAc5BkLTCX.jpg

我做了如下的步驟 :

  1. 經過 Gray 後的
    https://ithelp.ithome.com.tw/upload/images/20210305/20135660HY1oOLBlBI.jpg

  2. 接著我處理了 Erosion.
    https://ithelp.ithome.com.tw/upload/images/20210305/20135660RlkEDQIqqY.jpg

  3. 對第一次 Erosion 後的, 做 Threshold 處理:
    https://ithelp.ithome.com.tw/upload/images/20210305/20135660vfLC7MDEmf.jpg

  4. 對 Threshold 後的, 再 Erosion 一次 :
    https://ithelp.ithome.com.tw/upload/images/20210305/20135660EDNm8KeQb1.jpg

我的目的是, 要找出這張圖像的 【不正常扭曲】處.

做完上述步驟後, 我試了一些不同的動作,
但是, 好像都沒有辦法找出來 【不正常扭曲】處.

接著, 就不知道該如何做了.
有沒有哪位大神可以幫幫忙 提示一下.
謝謝.

以下, 為我用 Python 做的步驟 :

定義一個顯示圖片的 function

def displayIMG(img, windowName):
cv2.namedWindow(windowName, cv2.WINDOW_NORMAL)
cv2.imshow(windowName, img)
cv2.imwrite(windowName + '.jpg', img)

1.讀取圖檔:讀取圖片檔並顯示:

image = cv2.imread(image_filename)
displayIMG(image, "Original")

2.轉換為灰階

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
name = "Gray"
draw = gray
displayIMG(draw, name)

3.做 Erosion 處理

kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(gray, kernel, iterations=2)
name = "Gary_Erosion"
draw = erosion
hist = plotHistogram(draw, name)
max_gray = max(hist)
print('Max Gray = ', max_gray)
displayIMG(draw, name)

4.做 Threshold

(T, thresh) = cv2.threshold(gray, 120, 255, cv2.THRESH_TOZERO)
name = "Threshold_Gray"
draw = thresh
displayIMG(draw, name)
plotHistogram(draw, name, max_gray)

5. 對 Threshold 後的, 再 Erosion 一次.

kernel = np.ones((3, 3), np.uint8)
erosion2 = cv2.erode(draw, kernel, iterations=5)
name = "Gary_Threshold_Erosion"
draw = erosion2
hist = plotHistogram(draw, name, max_gray)
displayIMG(draw, name)

50男 iT邦新手 4 級 ‧ 2021-03-12 10:17:02 檢舉
霍夫找線

尚未有邦友回答

立即登入回答