Search…

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

18/09/20205 min read
Hướng dẫn các thao tác xử lý ảnh cơ bản với thư viện EmguCV bao gồm: load ảnh, save ảnh, hiển thị hình ảnh, phóng to, phóng nhỏ ảnh,...

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 này sẽ giới thiệu control xử lý hình ảnh của EmguCV, lý do tại sao nên sử dụng nó thay vì tự xây dựng và một số thao tác xử lý ảnh cơ bản với thư viện EmguCV. 

Imagebox

Toolbox được thư viện EmguCV xây dựng nhằm xử lý hình ảnh. Có thể tự xây dựng cho mình một tool để xử lý hình ảnh riêng, nên sử dụng ImageBox trong EmguCV vì các lý do sau:

  • ImageBox là một control hiệu suất cao để hiển thị hình ảnh. Bất cứ khi nào có thể, nó sẽ hiển thị một Bitmap với các đối tượng hình ảnh. Nó không cần một bản sao lưu trữ nên tốc độ hiển thị ảnh rất nhanh.
  • Có thể kiểm tra các giá trị điểm ảnh, tỷ lệ khung hình, màu sắc, các thiết lập hình ảnh,... khi hình ảnh được hiển thị.
  • Thao tác đơn giản với hộp thoại Option sẽ hiện ra chỉ với một cái click mouse.
  • Sử dụng nhanh chóng với bất kỳ project nào muốn có.

Thêm các control vào Toolbox

Để biết cách thêm các control của EmguCV vào Toolbox, có thể tham khảo bài viết:

ss_1

Thêm control ImageBox vào trong Form Design để có thể thao tác xử lý ảnh.

Một số khái niệm, thuật ngữ trong EmguCV

Image color

Không gian màu của hình ảnh. Trong EmguCV sử dụng nhiều không gian màu như:

  • Gray (Trắng đen)
  • Bgr (Blue Green Red)
  • Bgra (Blue Green Red Alpha)
  • ...

Không gian màu là một mô hình toán học để mô tả các màu sắc trong thực được biểu diễn dưới dạng số học.

 Ví dụ

Không gian màu BGR:

  • Ý tưởng chính là kết hợp 3 màu sắc cơ bản là đỏ (Red, R), xanh lục (Green, G), xanh lơ (Blue, B) để mô tả ra các màu sắc khác.
  • Nếu hình ảnh được mã hóa bằng 24 bit thì có 8 bit lần lượt cho cả 3 kênh B-G-R. Mỗi kênh nhận một giá trị từ 0-255. Như vậy có 255x255x255 = 1.66 triệu màu.
  • Màu trắng có giá trị (255, 255, 255) và màu đen có giá trị (0, 0, 0)
  • ...
ss_2

Histogram

  • Là biểu đồ nói lên mối quan hệ các giá trị pixel ảnh (điểm ảnh) và tuần suất xuất hiện của chúng. Nhìn vào biểu đồ Histogram có thể biết được một hình ảnh sáng tối thế nào (biểu đồ lệch phía phải thì là thừa sáng và ngược lại).
  • Với control histogramBox có thể hiển thị biểu đồ Histogram của hình ảnh.
ss_3

Cấu trúc của một bức ảnh

Một ảnh được lưu trữ trên máy tính là một ma trận điểm ảnh (pixel). Nhờ vào ma trận này mà thư viện EmguCV xây dựng các thao tác về xử lý màu sách của ảnh, phóng to, thu nhỏ,...

ss_4
Phân tích

Ở trên có một phần hình ảnh:

  • Có kích thước 4x4 và có Imager Color là Bgr.
  • Ứng với mỗi tọa độ pixel này sẽ có một màu sắc nhất định. Với Image Color là Bgr thì mỗi điểm này có 3 giá trị là Blue-Green-Red. Có thể truy cập nó với phương thức Data.
  • Ví dụ: Tại điểm (3:1) có giá trị màu là (0-0-255) tức là màu đỏ.

Các thao tác xử lý hình ảnh cơ bản

Ở mục ImageBox đã giới thiệu rằng chỉ cần nhấp chuột phải là có thể một hộp thoại Option xử lý hình ảnh với EmguCV. Với các thao tác chỉ việc chọn các thao tác phù hợp với mục đích.

Open file và save file

Lần lượt là các thao tác mở file hình ảnh được chọn và lưu các hình ảnh đã được (hoặc chưa) được xử lý với một thư mục tùy chọn xác định.  

ss_5

Trong class Image, function ToBitmap() giúp có thể return một Bitmap Object. Nhờ đó có thể sử dụng một control PictureBox để hiển thị hình ảnh.

Image Property

Right Mouse Click > Property.Chọn thao tác này sẽ xuất hiện một hộp thoại có một một số chức năng sau:

  • Hiển thị thông số của hình ảnh như Size, Image Color, Image Depth
  • Giá trị BGR tại vị trí trỏ chuột hiện tại
  • Chức năng phóng to hoặc thu nhỏ hình ảnh với một tỉ lệ cho trước
  • Hiển thị Histogram
ss_6

Conversion

Right mouse click > Filters > Conversion > Convert<TOtherColor, TOtherDeph>(). Là chức năng dùng để chuyển đổi các không gian màu cho hình ảnh. 

ss_7

Trong hộp thoại Convert.

ss_8

Với thành phần code trong hộp thoại Image Property, có thể thấy phương thức xử lý ảnh. Ví dụ ở trên xử lý từ một ảnh có không gian màu là Bgr sang Gray. Trong EmguCV để chuyển không gian màu thì sử dụng  phương thức Convert.

Zoom

Phóng to hoặc thu nhỏ hình ảnh nhờ vào chức năng Zoom trong Option hoặc chức năng Zoom trong hộp thoại Image Property.

ss_9

Với chức năng Zoom trong hộp thoại Option.Có 3 chức năng:

  • Zoom In: Phóng to hình ảnh hiển thị hiện tại lên x2 lần.
  • Zoom Out: Thu nhỏ hình ảnh hiển thị hiện tại xuống x2 lần.
  • Un-Zoom: Đưa hình ảnh hiển thị về kích thước ban đầu.

Ngoài ra có thể sử dụng Wheel Mouse để phóng to hoặc thu nhỏ hình ảnh hiển thị hiện tại.

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