Search…

EmguCV - OpenCV cho .NET - Một Số Thao Tác Xử Lý Ảnh Cơ Bản - II

18/09/20204 min read
Hướng dẫn thao tác xử lý ảnh cơ bản với thư viện EmguCV như: Gradient, Edges, Morphology, Pyramids, Smoothing, Thesold, Transform, Varsios.

Giới thiệu

EmguCV là một thư viện xử lý hình ảnh, thị giác máy tính dành riêng cho ngôn ngữ C#. EmguCV đã xây dựng những control xử lý hình ảnh. Bài viết tiếp tục giới thiệu một số thao tác xử lý ảnh cơ bản với control ImageBox của EmguCV.

Filters

Có ý nghĩa trong việc tạo ra các hiệu ứng ở trong ảnh. Trong bài viết sẽ giới thiệu các chức năng xử lý hình ảnh:

  • Conversion
  • Gradient, Edges
  • Morphology
  • Pyramids 
  • Smooting
  • Theshold
ss_1

Conversion

Chuyển đổi không gian màu đã được giới thiệu trong bài viết Một Số Thao Tác Xử Lý Ảnh Cơ Bản Với EmguCV.

Gradient, Edges

Chức năng tìm biên ảnh (Grandient, edges) của đối tượng trong hình ảnh. Nguyên tắc là nhân(x, *) ma trận điểm ảnh (pixel) cho một ma trận lọc (Kernel, mask). Có 3 bộ lọc có chức năng tìm biên ảnh.

  • Sobel: Lọc tìm biên ảnh
  • Laplace: Lọc tìm biên ảnh, ước lượng chuyển động của đối tượng trong hình ảnh.
  • Canny: Lọc tìm biên ảnh. Trước khi nhân với ma trận lọc, Canny sử dụng bộ lọc Gause để loại nhiễu và làm cho ảnh mờ đi.
ss_2

Chú ý: Nội dung tiếp theo sẽ có nhắc tới những bộ lọc khác, như ở phần trên đã nói, các bộ lọc đều có một nguyên tắc chung. Tùy vào mục đích của bộ lọc nên mỗi ma trận lọc (Kernel, mask) khác nhau.

Morphology

Bao gồm các phép toán xử lý đối tượng trong ảnh. Thông thường khi Zoom một tấm hình lớn lên hoặc nhỏ xuống, theo nguyên lý của Zoom ảnh thì điểm ảnh (Pixel) sẽ to lên hoặc nhỏ xuống. Nhưng đôi khi có một số đối tượng trong ảnh cần phải phóng lớn lên để nhìn rõ là cái gì?,... Các phép toán phía dưới cho phép điều đó.

  • Dilation: phép toán giúp đối tượng trong ảnh có thể dãn kích thước.
  • Erosion: phép toán giúp cho đối tượng trong ảnh co kích thước lại.
ss_3

Pyramids và Smoothing

Đều là những bộ lọc trung vị. Bộ ma trận lọc Smoothing có tác dụng làm mờ, làm trơn, khử nhiễu,... các điểm ảnh.

ss_4

Threshold

Chức năng có tác dụng sửa thành ảnh nhị phân. Ảnh nhị phân là ảnh mà có các điểm ảnh (Pixel) chỉ mang 2 giá trị là 0 (Đen) hoặc 255 (Trắng).

Nhị phân hóa

Nhị phân hóa một ảnh là quá trình biến đổi một ảnh xám,... thành ảnh nhị phân. Ngưỡng nhị phân T dùng để xách định điểm ảnh của ảnh đó khi chuyển thành điểm nhị phân.

  •  Nếu giá trị điểm ảnh > T thì chuyển thành điểm ảnh nhị phân mang giá trị 255 (Trắng).
  • Nếu giá trị điểm ảnh < T thì chuyển thành điểm ảnh nhị phân mang giá trị 0 (Đen).

Nhị phân hóa với ngưỡng động

Việc chuyển ảnh nhị phân bằng phương pháp nhị phân hóa. Với mỗi giá trị T (Ngưỡng nhị phân) thu được các tấm ảnh nhị phân khác nhau. Vì vậy để tìm một tấm ảnh nhị phân đẹp, sử dụng thêm một phương pháp nữa là nhị phân hóa với ngưỡng động.

  • Chia tấm ảnh thành nhiều khu vực khác nhau (Cửa sổ).
  • Dùng một thuật toán để tìm một giá trị T phù hợp với từng khu vực (Cửa sổ)
  • Áp dụng phương pháp nhị phân hóa cho từng khu vực (Cửa sổ) với T phù hợp
ss_5

Trong EmguCV có nhiều phương pháp tìm ảnh nhị phân. Để tìm một bức ảnh nhị phân thì cần các tham số sau.

  • thresholdType: ngưỡng nhị phân T
  • maxValue: giá trị lớn nhất của điểm ảnh (Pixel) trong ảnh (Thông thường là 255)
  • param1: thông số bù trừ trong trường hợp ảnh có độ tương phản rất lớn
  • blockSize: kích thước của một vùng cửa sổ áp dụng cho việc tính toán ngưỡng động. Có giá trị (%2 == 1 && > 1)
  • adaptiveMethod: cách tính T cho từng vùng của nhị phân(vùng cửa sổ)
ss_6
Caption

Transform

Gồm có các chức năng xoay hình ảnh.

  • LogPolar
  • Rotate
  • Flip
ss_7

Varios

Gồm các chức năng:

  • Resize: thay đổi kích thước hình ảnh
  • EqualizeHist: cân bằng Histogram vì có một số ảnh rất tối hoặc sáng. Dựa trên nguyên lý chuyển màu dạng RGB sang HSV, sau đó cân bằng thành phần kênh màu V (Value mức độ sáng) sau đó biển đổi ngược lại
  • SetRandNormal
  • SetRandUniform
ss_8

Bài chung series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024