Edge trong xử lý ảnh

We’ve updated our privacy policy so that we are compliant with changing global privacy regulations and to provide you with insight into the limited ways in which we use your data.

You can read the details below. By accepting, you agree to the updated privacy policy.

Thank you!

View updated privacy policy

We've encountered a problem, please try again.

Trong Thị giác máy tính, phân vùng ảnh là một kỹ thuật quan trọng, giúp giải nhiều bài toán thuộc các lĩnh vực khác nhau như xử lý ảnh y tế, phát hiện và nhận dạng đối tượng, hệ thống camera thông minh,… Đây là tiền đề của quá trình xử lý dữ liệu hình ảnh. Kết quả phân vùng tốt sẽ tạo điều kiện thuận lợi cho các khâu xử lý về sau, đảm bảo tính hiệu quả cao, gia tăng mức độ chính xác, đồng thời giảm thiểu nguồn lực tính toán. 

Phân vùng ảnh (Image segmentation) là một phương pháp mà trong đó, hình ảnh kỹ thuật số được chia thành nhiều nhóm con khác nhau được gọi là segments. Mục tiêu của phân vùng ảnh là làm giảm độ phức tạp của hình ảnh, giúp cho quá trình xử lý hoặc phân tích hình ảnh sau đó trở nên đơn giản hơn. Nói một cách dễ hiểu, phân vùng là dán nhãn cho từng pixel. Tất cả các yếu tố hình ảnh hoặc pixel thuộc cùng một danh mục sẽ có chung một nhãn. Ví dụ: Đối với bài toán phát hiện đối tượng, thay vì xử lý toàn bộ hình ảnh, máy có thể chỉ thực hiện trên một đoạn được chọn bởi thuật toán phân vùng. Điều này sẽ ngăn máy xử lý toàn bộ hình ảnh, do đó làm giảm thời gian suy luận.

Edge trong xử lý ảnh
Thay vì xử lý toàn bộ hình ảnh, máy chỉ thực hiện trên một đoạn được chọn bởi thuật toán phân vùng.

Các cách tiếp cận phân vùng ảnh

  • Cách tiếp cận tương đồng (Similarity approach), có nghĩa là phát hiện sự tương đồng giữa các pixel hình ảnh để tạo thành một phân đoạn, dựa trên một ngưỡng. Các thuật toán học máy như phân cụm thường dựa trên kiểu tiếp cận này để phân vùng một hình ảnh.
  • Cách tiếp cận gián đoạn (Discontinuity approach): Cách tiếp cận này dựa trên sự gián đoạn của các giá trị cường độ pixel trong hình ảnh. Các kỹ thuật phát hiện đường, điểm và cạnh sử dụng kiểu tiếp cận gián đoạn để thu được các kết quả phân vùng trung gian. Kết quả này sau đó có thể được xử lý để cho ra hình ảnh được phân vùng cuối cùng.

Một số kỹ thuật phân vùng ảnh

Có 05 kỹ thuật phân vùng ảnh, bao gồm:

  • Phân vùng dựa trên ngưỡng (Threshold Based Segmentation)
  • Phân vùng dựa trên cạnh (Edge Based Segmentation)
  • Phân vùng dựa trên khu vực (Region-Based Segmentation)
  • Phân vùng dựa trên kỹ thuật phân cụm (Clustering Based Segmentation)
  • Phân vùng dựa trên mạng nơron nhân tạo (Artificial Neural Network Based Segmentation)

Dưới đây là những thông tin cụ thể về từng loại kỹ thuật phân vùng này.

1, Phân vùng dựa trên ngưỡng (Threshold Based Segmentation)

Phân đoạn ngưỡng ảnh là một dạng phân vùng ảnh đơn giản, giúp tạo ra một hình ảnh nhị phân hoặc nhiều màu dựa trên việc đặt giá trị ngưỡng theo cường độ pixel của hình ảnh gốc.

Trong quá trình xác định ngưỡng, cần xem xét biểu đồ cường độ của tất cả các pixel trong hình ảnh. Sau đó, tiến hành đặt một ngưỡng để chia hình ảnh thành các phần. Ví dụ: khi xem xét các pixel hình ảnh nằm trong khoảng từ 0 đến 255, ngưỡng có thể đặt là 60. Vì vậy, tất cả các pixel có giá trị nhỏ hơn hoặc bằng 60 sẽ được cung cấp giá trị 0 (màu đen) và tất cả các pixel có giá trị lớn hơn hơn 60 sẽ được cung cấp với giá trị 255 (màu trắng).

Đối với một ảnh có nền và đối tượng, có thể chia ảnh thành các vùng dựa trên cường độ của đối tượng và nền. Nhưng ngưỡng này phải được thiết lập hoàn hảo để phân đoạn hình ảnh thành một đối tượng và một nền.

Phân ngưỡng bao gồm các kỹ thuật như ngưỡng toàn cục (Global thresholding); ngưỡng thủ công (Manual thresholding); ngưỡng thích ứng (Adaptive Thresholding); ngưỡng tối ưu  (Optimal Thresholding); ngưỡng thích ứng cục bộ (Local Adaptive Thresholding).

2, Phân vùng dựa trên cạnh (Edge Based Segmentation)

Cạnh trong ảnh đánh dấu những vị trí hình ảnh không liên tục về mức xám, màu sắc, kết cấu, v.v. Khi di chuyển từ vùng này sang vùng khác, mức xám có thể thay đổi. Vì vậy, nếu tìm thấy sự gián đoạn đó, ta có thể tìm thấy cạnh. Thực tế, có nhiều toán tử phát hiện cạnh, nhưng hình ảnh thu được là kết quả phân vùng trung gian, và không nên nhầm lẫn với hình ảnh được phân vùng cuối cùng. Để ra được kết quả cuối, cần thực hiện một số bước bổ sung bao gồm: kết hợp các phân vùng cạnh thu được làm một, để giảm số lượng phân vùng và có được một đường viền liền mạch của đối tượng. 

Như vậy, có thể thấy, phân vùng cạnh đưa ra một kết quả phân vùng trung gian. Kết quả này sau đó có thể áp dụng theo vùng hoặc bất kỳ kiểu phân đoạn nào khác, nhằm có được hình ảnh được phân vùng cuối.

Edge trong xử lý ảnh
Các loại cạnh trong ảnh. Nguồn ảnh: Towards Data Science

Các cạnh thường được liên kết với “Độ lớn” và “Hướng”. Một số toán tử phát hiện cạnh cung cấp cả hai yếu tố này, chẳng hạn như Sobel edge operator, canny edge detector, Kirsch edge operator, Prewitt edge operator, Robert’s edge operator,….

3, Phân vùng dựa trên khu vực (Region-Based Segmentation)

Một vùng có thể được phân loại là một nhóm các pixel kết nối với nhau và có các thuộc tính tương đồng về cường độ, màu sắc, v.v. Trong kiểu phân vùng này, có một số quy tắc được định sẵn mà pixel phải tuân theo để đảm bảo có thể phân loại thành các vùng pixel tương tự. Phương pháp phân vùng dựa trên khu vực được ưu tiên hơn phương pháp phân vùng dựa trên cạnh trong trường hợp ảnh bị nhiễu. 

Có 2 nhóm kỹ thuật chính trong phân vùng dựa trên khu vực, bao gồm:

  • Phát triển khu vực (Region growing method)
  • Phân tách và hợp nhất khu vực (Region splitting and merging method)

Phát triển khu vực (Region growing method)

Đối với kỹ thuật này, chúng ta bắt đầu với một số pixel làm pixel hạt giống và sau đó kiểm tra các pixel liền kề. Nếu các pixel liền kề tuân theo các quy tắc được xác định trước, thì pixel đó sẽ được thêm vào vùng của pixel gốc và quá trình sẽ tiếp tục cho đến khi không còn điểm tương đồng nào. Phương pháp này thực hiện theo cách tiếp cận từ dưới lên. Trong trường hợp khu vực đang phát triển, quy tắc ưu tiên có thể được đặt làm ngưỡng. 

Phân tách và hợp nhất khu vực

Đối với phân tách khu vực, toàn bộ hình ảnh đầu tiên được chụp dưới dạng một vùng duy nhất. Nếu không tuân theo các quy tắc được xác định trước, vùng đó sẽ lại được chia thành nhiều vùng (thường là 4 góc phần tư) và tiếp tục áp dụng các quy tắc để quyết định có chia nhỏ hơn nữa hay không. Quá trình này kéo dài cho đến khi không có sự phân chia khu vực nào nữa, tức là mọi khu vực đều tuân theo các quy tắc được xác định trước. 

Điều kiện kiểm tra để quyết định có nên chia nhỏ một vùng hay không là: Nếu giá trị tuyệt đối của sự chênh lệch giữa cường độ pixel tối đa và tối thiểu trong một vùng nhỏ hơn hoặc bằng một giá trị ngưỡng do người dùng quyết định thì vùng đó không yêu cầu chia nhỏ thêm.

Đối với hợp nhất khu vực, mỗi pixel được coi là một vùng riêng lẻ. Ta chọn một vùng làm vùng hạt giống để kiểm tra tính tương đồng của các vùng lân cận dựa trên quy tắc được định trước. Nếu giống nhau, chúng sẽ được hợp nhất thành một vùng duy nhất và cứ tiếp tục như vậy cho đến khi xây dựng các vùng được phân đoạn của toàn bộ hình ảnh. 

Cả phân tách và hợp nhất khu vực đều là quá trình lặp đi lặp lại. Thông thường, việc tách vùng đầu tiên được thực hiện trên một hình ảnh để chia ảnh đó thành các vùng tối đa, trước khi các vùng này được hợp nhất để tạo thành hình ảnh mới, với những phân vùng tốt hơn so với hình ảnh gốc.

4, Phân vùng dựa trên kỹ thuật phân cụm (Clustering Based Segmentation)

Phân cụm (Clustering) là một loại thuật toán học máy không giám sát, được sử dụng phổ biến trong phân vùng ảnh. Một trong những thuật toán Clustering thường được ứng dụng cho tác vụ phân vùng ảnh là KMeans Clustering. Loại phân cụm này có thể được sử dụng để tạo các phân đoạn trong một hình ảnh có màu.

KMeans Clustering

Hãy hình dung về một tập dữ liệu 2 chiều. Đầu tiên, trong tập dữ liệu, các trọng tâm – centroid (do người dùng chọn) được khởi tạo ngẫu nhiên. Sau đó, tiến hành tính toán khoảng cách của tất cả các điểm đến tất cả các cụm. Điểm được gán cho cụm có khoảng cách nhỏ nhất. Tiếp đến, trọng tâm của tất cả các cụm được tính toán lại bằng cách lấy giá trị trung bình của cụm đó và các điểm dữ liệu lại một lần nữa được gán cho các cụm. Quá trình này tiếp diễn cho đến khi thuật toán hội tụ thành một giải pháp tốt. Thông thường, số lần lặp lại như vậy rất nhỏ.

5, Phân vùng dựa trên mạng nơron nhân tạo (Artificial Neural Network Based Segmentation)

Kỹ thuật này sử dụng AI để tự động phân tích một hình ảnh và xác định các thành phần khác nhau của nó như khuôn mặt, đối tượng, văn bản, v.v. Mạng thần kinh tích chập (convolutional neural networks) khá phổ biến đối với việc phân vùng ảnh vì chúng có thể xác định và xử lý dữ liệu hình ảnh một cách nhanh chóng và hiệu quả.

Các chuyên gia tại Facebook AI Research (FAIR) đã tạo ra một kiến ​​trúc học sâu được gọi là Mask R-CNN, có thể được sử dụng như một bộ lọc pixel thông minh cho mọi đối tượng trong ảnh. Đây là phiên bản nâng cao của kiến ​​trúc phát hiện đối tượng Faster R-CNN. 

Trong quá trình phân vùng ảnh, trước tiên phải chuyển hình ảnh đầu vào đến ConvNet để tạo bản đồ đối tượng cho hình ảnh. Sau đó, hệ thống áp dụng mạng đề xuất vùng (Region Proposal Network – RPN) trên bản đồ đối tượng và tạo đề xuất đối tượng cùng với điểm số của chúng. Sau đó, lớp tổng hợp ROI (Region of interest) được triển khai cho các đề xuất để giảm chúng xuống một kích thước. Trong giai đoạn cuối cùng, hệ thống chuyển các đề xuất đến lớp kết nối để phân loại và tạo ra kết quả với các hộp giới hạn được gán cho mọi đối tượng.