Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การพังทลายและการขยายภาพโดยใช้ OpenCV ใน Python


ในปัญหานี้ เราจะมาดูกันว่า Python สามารถทำ Morphological Operations เช่น Erosion และ Dilation โดยใช้โมดูล OpenCV ได้อย่างไร ไลบรารี OpenCV ได้รับการออกแบบมาสำหรับการมองเห็นด้วยคอมพิวเตอร์เป็นหลัก เป็นโอเพ่นซอร์ส เดิมทีได้รับการออกแบบโดย Intel ใช้งานได้ฟรีภายใต้ใบอนุญาต BSD แบบโอเพนซอร์ส

ในการใช้ฟังก์ชัน OpenCV เราจำเป็นต้องดาวน์โหลดโดยใช้ pip .

sudo pip3 install opencv-python

Erosion Image คืออะไรและทำงานอย่างไร

ในการกัดเซาะ มันกัดเซาะขอบเขตของวัตถุเบื้องหน้า ใช้สำหรับลบจุดสีขาวเล็กๆ ออกจากภาพ การกัดเซาะยังสามารถใช้เพื่อแยกภาพที่เชื่อมต่อกันสองภาพที่เชื่อมต่อกัน

  • เคอร์เนลถูกสร้างขึ้นจากรูปภาพ เคอร์เนลเป็นเมทริกซ์ โดยที่ลำดับเป็นเลขคี่ เช่น 3, 5, 7

  • เลือกพิกเซลของภาพ พิกเซลนี้จะถูกเลือกเป็น 1 ก็ต่อเมื่อพิกเซลทั้งหมดภายใต้เคอร์เนลเป็น 1 มิฉะนั้นจะถูกกัดเซาะ

  • ดังนั้นพิกเซลทั้งหมดที่อยู่ใกล้ขอบเขตจะถูกละทิ้ง

  • ดังนั้นความหนาของวัตถุเบื้องหน้าจึงลดลง

Dilation Image คืออะไรและทำงานอย่างไร

ใน Dilation จะเพิ่มพื้นที่วัตถุ การกัดเซาะสามารถขจัดสัญญาณรบกวนสีขาว แต่ยังทำให้ภาพของเราเล็กลงด้วย ดังนั้นหลังจากการกัดเซาะ หากทำการขยายภาพ เราจะได้รับผลการกำจัดสัญญาณรบกวนที่ดีขึ้น นอกจากนี้ยังสามารถใช้ Dilation เพื่อเชื่อมส่วนที่แตกหักของวัตถุได้อีกด้วย

  • เคอร์เนลถูกสร้างขึ้นจากรูปภาพ เคอร์เนลเป็นเมทริกซ์ โดยที่ลำดับเป็นเลขคี่ เช่น 3, 5, 7

  • เลือกพิกเซลของภาพ พิกเซลนี้จะถูกเลือกเป็น 1 ต่อเมื่อพิกเซลทั้งหมดภายใต้เคอร์เนลคือ 1

  • เพิ่มพื้นที่สีขาวหรือขนาดของวัตถุเบื้องหน้าของภาพ

โค้ดตัวอย่าง

import cv2 
import numpy as np
input_image = cv2.imread('TP_logo.jpg', cv2.IMREAD_COLOR)
 kernel = np.ones((3,3), np.uint8)       # set kernel as 3x3 matrix from numpy
#Create erosion and dilation image from the original image
erosion_image = cv2.erode(input_image, kernel, iterations=1)
dilation_image = cv2.dilate(input_image, kernel, iterations=1)
cv2.imshow('Input', input_image)
cv2.imshow('Erosion', erosion_image)
cv2.imshow('Dilation', dilation_image)
cv2.waitKey(0)       #wait for a key to exit

ผลลัพธ์

การพังทลายและการขยายภาพโดยใช้ OpenCV ใน Python