Mục lục bài viết
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:
- EmguCV – OpenCV cho .NET – Giới Thiệu và Cách Tích Hợp vào .NET
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ư:
[external_link offset=1]- 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)
- …
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.
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ỏ,…
Phân tích
Ở trên có một phần hình ảnh:
- Có kích thước 4×4 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ứcData
. - 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.
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:
[external_link offset=2]- 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
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.
Trong hộp thoại Convert.
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.
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
- EmguCV – OpenCV cho .NET – Giới Thiệu và Cách Tích Hợp vào .NET
- EmguCV – OpenCV cho .NET – Một Số Thao Tác Xử Lý Ảnh Cơ Bản – I
- EmguCV – OpenCV cho .NET – Một Số Thao Tác Xử Lý Ảnh Cơ Bản – II