1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tiểu luận giữa kì môn xác suất thống kê Ứng dụng cho công nghệ thông tin thư viện statistics và lược Đồ tần số histogram trong xử lí Ảnh số

51 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tiểu Luận Giữa Kì Môn Xác Suất Thống Kê Ứng Dụng Cho Công Nghệ Thông Tin Thư Viện Statistics Và Lược Đồ Tần Số Histogram Trong Xử Lí Ảnh Số
Tác giả Lê Thị Hiếu Ngân
Người hướng dẫn ThS. Nguyễn Huỳnh Minh Duy
Trường học Trường Đại Học Tôn Đức Thắng
Chuyên ngành Xác Suất Thống Kê Ứng Dụng Cho Công Nghệ Thông Tin
Thể loại tiểu luận
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 14,14 MB

Cấu trúc

  • CHƯƠNG 1 SƠ LƯỢC VỀ THƯ VIỆN STATISTICS (11)
    • 1.1 Thư viện Statistics (11)
    • 1.2 Các hàm trong thư viện Statistics (11)
      • 1.2.1 Hàm mean() (11)
      • 1.2.2 Hàm fmean() (12)
      • 1.2.3 Hàm geometric_mean() (13)
      • 1.2.4 Hàm harmonic_mean() (14)
      • 1.2.5 Hàm median() (15)
      • 1.2.6 Hàm median_low() (16)
      • 1.2.7 Hàm median_high() (17)
      • 1.2.8 Hàm median_grouped (18)
      • 1.2.9 Hàm mode() (19)
      • 1.2.10 Hàm multimode() (20)
      • 1.2.11 Hàm quantiles (21)
      • 1.2.12 Hàm pstdev() (22)
      • 1.2.13 Hàm pvariance() (23)
      • 1.2.14 Hàm stdev() (24)
      • 1.2.15 Hàm variance() (25)
      • 1.2.16 Hàm covariance() (26)
      • 1.2.17 Hàm correlation() (27)
      • 1.2.18 Hàm linear_regression() (28)
  • CHƯƠNG 2 GIẢI THUẬT HISTOGRAM EQUALIZATION (30)
    • 2.1 Khái niệm (30)
    • 2.2 Tại sao cần phải sử dụng thuật toán Histogram Equalization? (30)
    • 2.3 Thuật toán của Histogram Equalization (30)
    • 2.4 Ví dụ minh họa (31)
    • 2.5 Nhận xét về thuật toán Histogram Equalization (33)
  • CHƯƠNG 3 GIẢI THUẬT HISTOGRAM MATCHING (34)
    • 3.1 Khái niệm (34)
    • 3.2 Tại sao cần phải sử dụng thuật toán Histogram Matching? (34)
    • 3.3 Thuật toán của Histogram Equalization (0)
    • 3.4 Ví dụ minh họa (35)
    • 3.5 Nhận xét về thuật toán Histogram Matching (37)
  • CHƯƠNG 4 HIỆN THỰC THUẬT TOÁN (37)
    • 4.1 Code và giải thích code (37)
      • 4.1.1 Khai báo thư viện (38)
      • 4.1.2. Định nghĩa các functions sử dụng (38)
      • 4.1.3 Thực thi chương trình (42)
    • 4.2 Ví dụ chạy code (44)

Nội dung

- Để sử dụng thư viện statistics, ta cần khai báo thư viện thông qua câu lệnh:import statistics 1.2 Các hàm trong thư viện Statistics - Hàm mean có tham số data truyền vào là một chuỗi g

SƠ LƯỢC VỀ THƯ VIỆN STATISTICS

Thư viện Statistics

- Thống kê là một nhánh của toán học liên quan đến việc thu thập, phân tích, diễn giải hay giải thích và trình bày các dữ liệu.

Thư viện statistics trong Python là một module hữu ích cung cấp các hàm thống kê toán học cho dữ liệu số, cho phép tính toán các chỉ số như trung bình, phương sai, độ lệch chuẩn và trung vị Các hàm trong thư viện này hỗ trợ các kiểu dữ liệu cơ bản như int, float, decimal và fraction, giúp người dùng dễ dàng thực hiện các phép toán thống kê.

- Để sử dụng thư viện statistics, ta cần khai báo thư viện thông qua câu lệnh:import statistics

Các hàm trong thư viện Statistics

1.2.1 Hàm mean() statistics.mean(data)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung bình cộng/trung bình của dữ liệu.

Trung bình cộng là giá trị được tính bằng cách lấy tổng tất cả các giá trị dữ liệu và chia cho tổng số giá trị đó Công thức tính trung bình cộng được thể hiện như sau: X = (1/n) ∑ (xi), trong đó n là tổng số dữ liệu và xi là giá trị của dữ liệu ở vị trí thứ i.

Hàm mean() nhận tham số là một chuỗi giá trị có thể trùng lặp và trả về giá trị trung bình của chuỗi dữ liệu, thường ở dạng float hoặc int Giá trị trả về phụ thuộc vào dữ liệu đầu vào, và hàm mean() có thể trả về các kiểu dữ liệu khác như phân số (Fraction) hoặc Decimal, cũng như nhiều giá trị khác khi kết hợp với các hàm khác Nếu dữ liệu đầu vào là rỗng, hàm sẽ phát sinh lỗi StatisticsError.

- Ví dụ về code của hàm mean():

Hình 1.1 Kết quả chạy code minh họa hàm mean()

1.2.2 Hàm fmean() statistics.fmean(data, weights=None)

Hàm trong thư viện Statistics được giới thiệu trong phiên bản 3.8 giúp tính toán trung bình cộng của dữ liệu nhanh hơn so với hàm mean().

Hàm fmean() nhận vào một chuỗi giá trị, trong đó các giá trị có thể lặp lại, và trả về giá trị trung bình dưới dạng float Nếu chuỗi dữ liệu được truyền vào là rỗng, hàm sẽ phát sinh lỗi StatisticsError.

Trong phiên bản Python 3.11, hàm fmean() đã được cải tiến với tính năng hỗ trợ trọng số tùy chọn weights, cho phép điều chỉnh giá trị trung bình dựa trên mức độ quan trọng hoặc tần suất xuất hiện của các giá trị trong tập dữ liệu Cần lưu ý rằng độ dài của weights phải tương ứng với độ dài của chuỗi dữ liệu, nếu không sẽ gây ra lỗi ValueError.

- Trung bình cộng có trọng số được tính theo công thức: X = ∑ i=1 n x i w i

∑ w i (1.2) trong đó: x i là giá trị của các quan sát, n là tổng số quan sát, w i là trọng số tương ứng của các quan sát.

- Ví dụ về code của hàm fmean():

Hình 1.2 Kết quả chạy code minh họa hàm fmean()

1.2.3 Hàm geometric_mean() statistics.geometric_mean(data, weights=None)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung bình nhân/trung bình hình học của dữ liệu được bổ sung ở phiên bản Python 3.8.

Trung bình nhân, hay còn gọi là trung bình hình học, được tính bằng căn bậc n của tích tất cả các số trong dãy Công thức tính trung bình hình học được biểu diễn như sau: X = (∏ i=1 n x i).

1 n (1.3) trong đó n là số lượng các số.

Hàm geometric nhận vào một chuỗi giá trị số thực, trong đó các giá trị có thể lặp lại, và trả về giá trị trung bình hình học dưới dạng số thực Nếu chuỗi dữ liệu truyền vào rỗng hoặc chứa giá trị âm, hàm sẽ phát sinh lỗi StatisticsError.

- Ví dụ về code của hàm geometric_mean():

Hình 1.3 Kết quả chạy code minh họa hàm geometric_mean()

1.2.4 Hàm harmonic_mean() statistics.harmonic_mean(data, weights=None)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung bình điều hòa được bổ sung từ cập nhật phiên bản 3.6.

Trung bình điều hòa là một giá trị toán học quan trọng, được tính bằng nghịch đảo của trung bình cộng trong một tập dữ liệu Nó thường được áp dụng để xác định giá trị trung bình của các biến cố thể hiện qua tỷ số của hai giá trị với đơn vị đo khác nhau, ví dụ như tốc độ di chuyển trung bình trong một khoảng thời gian nhất định Công thức tính trung bình điều hòa được biểu diễn như sau: X = n × (∑ i=1 n 1/x_i) −1.

Hàm harmonic_mean() nhận tham số là một chuỗi giá trị thực dương, cho phép các giá trị trùng nhau và trả về giá trị trung bình điều hòa dưới dạng số thực Nếu chuỗi dữ liệu rỗng hoặc chứa giá trị âm, hàm sẽ phát sinh lỗi StatisticsError.

- Ở phiên bản Python 3.10, harmonic_mean() hỗ trợ trọng số tùy chọn weights.

- Ví dụ về code của hàm harmonic_mean():

Hình 1.4 Kết quả chạy code minh họa hàm harmonic_mean()

1.2.5 Hàm median() statistics.median(data)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung vị của dữ liệu.

Trung vị là giá trị phân chia một mẫu, quần thể, hay phân bố xác suất thành hai nửa, với một nửa có giá trị nhỏ hơn hoặc bằng trung vị và nửa còn lại có giá trị lớn hơn hoặc bằng trung vị Để xác định trung vị, nếu số quan sát (n) là số lẻ, trung vị sẽ là giá trị ở vị trí thứ [(n+1)/2] Nếu n là số chẵn, trung vị được tính bằng giá trị trung bình cộng của hai giá trị ở giữa.

2 quan sát nằm ở vị trí n/2 và [(n+2)/2]).

Hàm median() nhận vào một chuỗi giá trị, trong đó các giá trị có thể lặp lại Khi số lượng dữ liệu là lẻ, hàm sẽ trả về giá trị ở vị trí giữa của chuỗi; nếu số lượng dữ liệu là chẵn, hàm sẽ trả về giá trị trung bình của hai giá trị đứng giữa Kết quả trả về sẽ là dạng số thực (float) Nếu chuỗi dữ liệu truyền vào rỗng, hàm sẽ phát sinh lỗi StatisticsError.

- Ví dụ về code của hàm median():

Hình 1.5 Kết quả chạy code minh họa hàm median()

1.2.6 Hàm median_low() statistics.median_low(data)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung vị thấp của dữ liệu.

Hàm median_low() nhận vào một chuỗi giá trị có thể có các giá trị trùng lặp Khi số lượng dữ liệu là lẻ, hàm sẽ trả về giá trị ở vị trí giữa của chuỗi; nếu số lượng dữ liệu là chẵn, hàm sẽ trả về giá trị nhỏ hơn trong hai giá trị nằm ở giữa Kết quả trung vị được trả về dưới dạng số thực (float) Nếu chuỗi dữ liệu truyền vào là rỗng, hàm sẽ phát sinh lỗi StatisticsError.

- Ví dụ về code của hàm median_low():

Hình 1.6 Kết quả chạy code minh họa hàm median_low()

1.2.7 Hàm median_high() statistics.median_high(data)

- Đây là một hàm trong thư viện Statistics được sử dụng để tính trung vị cao của dữ liệu.

Hàm median() nhận vào một chuỗi giá trị có thể chứa các giá trị trùng lặp Khi số lượng dữ liệu là lẻ, hàm sẽ trả về giá trị ở vị trí chính giữa; nếu số lượng dữ liệu là chẵn, hàm sẽ trả về giá trị lớn hơn trong hai giá trị đứng giữa Kết quả trả về luôn ở dạng số thực (float) Nếu chuỗi dữ liệu truyền vào rỗng, hàm sẽ phát sinh lỗi StatisticsError.

- Ví dụ về code của hàm median_high():

Hình 1.7 Kết quả chạy code minh họa hàm median_high()

1.2.8 Hàm median_grouped statistics.median_grouped(data)

Hàm trong thư viện Statistics cho phép tính toán trung vị của dữ liệu liên tục được phân nhóm theo khoảng cách xác định Tham số interval được sử dụng trong hàm này, với giá trị mặc định là

Hàm này xử lý các điểm dữ liệu như dữ liệu liên tục và tính toán trung vị bằng cách xác định khoảng trung vị dựa trên độ rộng khoảng cách đã chỉ định Sau đó, nó thực hiện nội suy trong khoảng đó bằng cách sử dụng vị trí của các giá trị từ tập dữ liệu nằm trong khoảng đó.

GIẢI THUẬT HISTOGRAM EQUALIZATION

Khái niệm

Biểu đồ tần suất, hay Histogram, là một loại biểu đồ cột trực quan hóa sự biến động của một tập hợp dữ liệu theo những hình dạng nhất định Nó mô tả dữ liệu một cách đơn giản mà vẫn giữ nguyên thông tin thống kê quan trọng Biểu đồ này thường được áp dụng trong thống kê để thể hiện số lượng xảy ra của một loại biến nhất định trong một phạm vi cụ thể.

Cân bằng lược đồ là một kỹ thuật trong xử lý ảnh nhằm tăng cường tương phản hình ảnh bằng cách phân bố mức xám hoặc màu sắc một cách đồng đều Mục tiêu chính của phương pháp này là tạo ra một biểu đồ histogram chuẩn mực, giúp các pixel trong hình ảnh có mức xám phân bố đồng đều trên toàn bộ phạm vi, từ đó cải thiện chất lượng hình ảnh.

Tại sao cần phải sử dụng thuật toán Histogram Equalization?

Thuật toán cải thiện độ tương phản giúp nâng cao chất lượng hình ảnh bằng cách điều chỉnh cường độ, từ đó làm nổi bật các chi tiết và giúp chúng trở nên dễ nhìn hơn.

Cân bằng lược đồ tần số là bước quan trọng trong việc chuẩn hóa ảnh đầu vào, giúp giảm thiểu ảnh hưởng của ánh sáng quá sáng hoặc quá tối, cũng như các yếu tố khác có thể tác động đến chất lượng ảnh.

Cải thiện chất lượng thuật toán xử lý ảnh là một yếu tố quan trọng, và phương pháp Equalization có thể giúp giảm nhiễu trong hình ảnh Bằng cách giảm độ nhiễu, hình ảnh trở nên rõ ràng hơn và giảm thiểu sự xáo trộn, từ đó nâng cao trải nghiệm người dùng.

Thuật toán của Histogram Equalization

Để tính histogram của ảnh, chúng ta có thể sử dụng vòng lặp để duyệt qua tất cả các pixel, từ đó đếm số lượng pixel có cường độ giống nhau.

Tính phân phối tích lũy (CDF) cho phép biểu đồ thể hiện sự phân phối tích lũy của mức xám trong ảnh CDF được tính bằng cách cộng dồn các giá trị trong histogram từ trái sang phải Công thức tính CDF là: CDF(i) = ∑ j=0 i H(j).

MXNi ϵ[0,255] trong đó CDF(i), là hàm phân phối tích lũy của PDF, H(i) là histogram của ảnh, M và N lần lượt là chiều rộng và chiều cao của ảnh

Để tính giá trị cường độ mới cho mỗi pixel trong ảnh, ta sử dụng tích phân của histogram tại cường độ của pixel đó Giá trị mới được xác định bằng cách nhân giá trị CDF tương ứng với mức xám hiện tại với số mức xám tối đa (thường là 255), nhằm chuẩn hóa giá trị trong khoảng từ 0 đến 255 Công thức tính là O(x, y) = round(CDF(I(x, y)) * (L - 1), trong đó L là số mức xám, thường là 256, và I là giá trị mức xám cũ của pixel.

Gán giá trị cường độ mới cho các pixel trong ảnh kết quả bằng cách sử dụng vòng lặp để duyệt qua từng pixel.

- Lưu ảnh mới đã cân bằng.

Ví dụ minh họa

Hình 2.1 Ảnh trước khi thực hiện cân bằng lược đồ tần số Histogram 1

Hình 2.2 Ảnh sau khi thực hiện cân bằng lược đồ tần số Histogram 1

Hình 2.3 Ảnh trước khi thực hiện cân bằng lược đồ tần số Histogram 2

Hình 2.4 Ảnh sau khi thực hiện cân bằng lược đồ tần số Histogram 2

Nhận xét về thuật toán Histogram Equalization

Thuật toán cân bằng histogram là một công cụ quan trọng trong xử lý ảnh, giúp nâng cao độ tương phản và làm cho các đối tượng trong ảnh trở nên rõ ràng hơn Phương pháp này cải thiện chi tiết của ảnh, đặc biệt khi ảnh quá tối hoặc quá sáng Tuy nhiên, cần lưu ý không áp dụng cho những bức ảnh có độ tương phản quá cao để tránh mất mát chi tiết.

GIẢI THUẬT HISTOGRAM MATCHING

Khái niệm

Histogram matching, hay kỹ thuật phù hợp lược đồ, là một phương pháp trong xử lý ảnh số nhằm điều chỉnh hình ảnh để lược đồ phân bố mức xám hoặc màu sắc tương đồng với một hình ảnh tham chiếu Mục tiêu chính của kỹ thuật này là nâng cao độ tương phản của hình ảnh, giúp cải thiện chất lượng trực quan và khả năng phân tích.

Histogram Matching yêu cầu một ảnh tham chiếu (ảnh đích) hoặc một phân phối mức xám cụ thể để điều chỉnh Quá trình này nhằm cân bằng lược đồ xám của ảnh đầu vào sao cho giống với ảnh tham chiếu, giúp cải thiện chất lượng hình ảnh và đồng nhất hóa các đặc điểm màu sắc.

Tại sao cần phải sử dụng thuật toán Histogram Matching?

Histogram Matching là phương pháp hiệu quả để điều chỉnh màu sắc của ảnh, giúp ảnh của bạn phù hợp với một ảnh tham chiếu mong muốn Bằng cách điều chỉnh mức xám, bạn có thể làm cho ảnh tương thích với một tiêu chuẩn cụ thể hoặc một phân phối mức xám nhất định Phương pháp này rất hữu ích khi cần đảm bảo rằng hình ảnh của bạn đạt được sự đồng nhất về màu sắc với hình ảnh tham khảo.

3.3 Thuật toán của Histogram Matching:

- Tính toán histogram của ảnh gốc và ảnh tham chiếu.

- Tính hàm tích lũy (CDF) của hai histogram cho ảnh gốc và ảnh tham chiếu.

- Tính CDF tối thiểu (CDF_Rmin) và CDF tối đa (CDF_Rmax) cho ảnh tham chiếu.

Áp dụng công thức ánh xạ cho từng pixel trong ảnh gốc, ta thay đổi giá trị mức xám của mỗi pixel (x, y) thành Mapping(I(x, y)) Ánh xạ giữa ảnh gốc và ảnh tham chiếu được tính theo công thức Mapping(x) = min(max(((CDF_R(x)).

- CDF_Rmin) / (CDF_Rmax - CDF_Rmin)) x (L-1), 0), L-1), trong đó L là số mức xám trong ảnh.

- Kết quả là ảnh đã điều chỉnh với phân phối mức xám tương tự với ảnh tham chiếu.

Hình 3.3 Ảnh đã qua Histogram Matching 1

Ví dụ minh họa

Hình 3.3 Ảnh đã qua Histogram Matching 1

Hình 3.6 Ảnh đã qua Histogram Matching 2

Nhận xét về thuật toán Histogram Matching

Thuật toán Histogram Matching là một phương pháp đơn giản và hiệu quả để cải thiện độ tương phản và giảm độ nhiễu trong hình ảnh, giúp làm rõ các chi tiết Tuy nhiên, hiệu quả của nó phụ thuộc nhiều vào chất lượng của hình ảnh tham chiếu Nếu hình ảnh tham chiếu không phù hợp với ảnh gốc, kết quả có thể không đạt yêu cầu, dẫn đến hình ảnh bị nhòe hoặc chói, không mang lại sự cải thiện như mong đợi.

HIỆN THỰC THUẬT TOÁN

Code và giải thích code

Để thực hiện yêu cầu ở Phần 2 liên quan đến hai thuật toán xử lý ảnh số, bao gồm Histogram Equalization trong chương 2 và Histogram Matching trong chương 3, chúng ta sẽ tuần tự khai báo thư viện, định nghĩa các hàm cần thiết và triển khai đoạn mã thực thi chương trình để hiện thực hóa các thuật toán này.

4.1.1 Khai báo thư viện: import cv2 import numpy as np import matplotlib.pyplot as plt

- cv2: Thư viện OpenCV, sử dụng để đọc và xử lý ảnh Để cài đặt thư viện, ta sử dụng lệnh: pip install opencv-python

- numpy: Thư viện NumPy, giúp xử lý mảng và tính toán Để cài đặt thư viện, ta sử dụng lệnh: pip install numpy

- matplotlib.pyplot: Thư viện Matplotlib, sử dụng để hiển thị ảnh và histogram Để cài đặt thư viện, ta sử dụng lệnh: pip install matplotlib

4.1.2 Định nghĩa các functions sử dụng:

The function `calculate_histogram` computes the histogram of an image by initializing a zeroed array of size 256 It iterates through each pixel of the image, updating the histogram to count the frequency of each pixel value Finally, the function returns the completed histogram.

Hàm calculate_histogram được sử dụng để tính toán histogram của một ảnh bằng cách khởi tạo một mảng số nguyên rỗng có độ dài 256 để lưu tần suất xuất hiện của từng giá trị pixel Qua thuộc tính image, hàm lấy kích thước của ảnh đầu vào và sử dụng hai vòng lặp lồng nhau để duyệt qua từng pixel Giá trị pixel tại vị trí (i, j) được lưu vào biến pixel_value, và tần suất tương ứng trong mảng histogram được tăng lên 1 Cuối cùng, hàm trả về mảng histogram thể hiện tần suất xuất hiện của từng giá trị pixel trong ảnh.

The cumulative sum function, defined as `calculate_cumulative_sum(array)`, computes the cumulative total of a given array It initializes a zero array of the same shape and sets the first element to the first value of the input array Then, it iteratively adds each subsequent element to the cumulative total from the previous index, ultimately returning the complete cumulative sum array.

Hàm calculate_histogram được sử dụng để tính toán histogram của một ảnh Mảng cumulative_sum được khởi tạo với kích thước và kiểu dữ liệu giống như mảng array đầu vào, với tất cả giá trị ban đầu là 0 Phần tử đầu tiên của cumulative_sum được gán bằng phần tử đầu tiên của array, đại diện cho tần suất xuất hiện của giá trị pixel 0 Vòng lặp for bắt đầu từ i = 1 đến len(array) - 1, duyệt qua toàn bộ các phần tử trong mảng array từ phần tử thứ hai Mỗi giá trị trong cumulative_sum là tổng của giá trị tương ứng trong array và giá trị tại vị trí trước đó trong cumulative_sum, tích lũy tần suất xuất hiện của các giá trị pixel từ 0 đến giá trị hiện tại Cuối cùng, hàm trả về mảng cumulative_sum chứa giá trị CDF, biểu thị tổng tích lũy của tần suất xuất hiện của các giá trị pixel.

The function `find_min_value_index` is designed to identify the index of the smallest value within a given array It initializes the minimum value and its index with the first element of the array By iterating through the array starting from the second element, the function compares each element to the current minimum value If a smaller value is found, it updates the minimum value and its corresponding index Finally, the function returns the index of the smallest value, providing an efficient way to locate the minimum in an array.

Hàm find_min_value_index được thiết kế để xác định chỉ số của giá trị nhỏ nhất trong một mảng Hàm khởi đầu bằng cách gán giá trị đầu tiên của mảng cho biến min_value và khởi tạo min_index với giá trị 0 Qua vòng lặp for, hàm duyệt từ phần tử thứ hai của mảng, trong mỗi lần lặp, nó kiểm tra nếu giá trị tại array[i] nhỏ hơn min_value hiện tại Nếu đúng, hàm sẽ cập nhật min_value và min_index với giá trị mới và chỉ số hiện tại Cuối cùng, hàm trả về min_index, chỉ số của giá trị nhỏ nhất trong mảng.

The function `equalize_histogram(image)` performs histogram equalization on a given image It calculates the height and width of the image, determining the total number of pixels A histogram of the image is computed, followed by the calculation of the cumulative distribution function (CDF) Finally, the function generates an equalized image by scaling the CDF values and converting them to an 8-bit unsigned integer format.

Hàm equalize_histogram thực hiện cân bằng histogram cho ảnh bằng cách tính tổng số pixel thông qua chiều cao và chiều rộng của ảnh Sau đó, hàm calculate_histogram được sử dụng để xác định histogram, phản ánh tần suất xuất hiện của từng giá trị pixel Tiếp theo, calculate_cumulative_sum được áp dụng để tính tổng tích lũy từ histogram Giá trị pixel của ảnh gốc được ánh xạ vào CDF, nhân với 255 để chuẩn hóa và chia cho tổng số pixel, từ đó tạo ra giá trị mới cho từng pixel, cuối cùng chuyển đổi về kiểu dữ liệu unsigned.

8-bit (np.uint8), phù hợp với định dạng giá trị pixel của ảnh Hàm trả về equalized_image, là ảnh đã được cân bằng histogram.

The function `match_histogram` performs histogram matching by first calculating the histogram and cumulative distribution function (CDF) of the input image It then computes the CDF of the reference histogram A mapping array is created to find the closest values between the image CDF and the reference CDF For each intensity value, the function identifies the nearest corresponding value in the reference CDF and updates the mapping Finally, the original image is transformed using this mapping to produce a matched image, which is returned as the output.

Hàm thực hiện cân bằng histogram của ảnh bắt đầu bằng việc sử dụng image để lấy kích thước ảnh, từ đó tính tổng số pixel bằng cách nhân chiều cao và chiều rộng: total_pixels = height x width Tiếp theo, hàm calculate_histogram được sử dụng để tính histogram, biểu diễn tần suất xuất hiện của từng giá trị pixel Sau đó, calculate_cumulative_sum được áp dụng để tính tổng tích lũy từ histogram Giá trị pixel trong ảnh gốc được ánh xạ vào CDF, nhân với 255 để chuẩn hóa và chia cho tổng số pixel total_pixels nhằm tạo ra giá trị mới cho từng pixel Cuối cùng, giá trị này được chuyển về kiểu dữ liệu unsigned 8-bit (np.uint8) và hàm trả về equalized_image, là ảnh đã được cân bằng histogram.

- Hàm lấy ảnh: def im_img(path): return cv2.imread(path, cv2.IMREAD_GRAYSCALE)

Hàm cv2.imread trong OpenCV cho phép đọc ảnh từ đường dẫn được chỉ định bởi biến path Tham số cv2.IMREAD_GRAYSCALE xác định rằng ảnh sẽ được chuyển đổi sang định dạng ảnh mức xám Kết quả trả về là ảnh đã được đọc và chuyển đổi thành ảnh mức xám.

After declaring the library and defining the supporting functions for the two algorithms, we proceed with the program using the following code: First, the user is prompted to enter the link to the photo they wish to equalize, which is stored as `original_image1` Next, the user inputs the link to the photo intended for histogram matching, saved as `original_image2` Finally, the user provides the link to their reference photo, which is assigned to `reference_image`.

Do không rõ tên file ảnh mà người chấm hoặc người dùng cần để thực thi hai đoạn code, họ sẽ được yêu cầu nhập đường dẫn đến file ảnh trên máy của mình.

 name1: Đường dẫn đến ảnh mà bạn muốn cân bằng histogram.

 name2: Đường dẫn đến ảnh mà bạn muốn sử dụng cho Histogram Matching.

 name3: Đường dẫn đến ảnh tham chiếu (reference image) cho Histogram Matching.

Sau khi nhập đường dẫn, chương trình sẽ áp dụng hàm im_img đã được định nghĩa ở mục 4.1.2 để đọc ảnh từ đường dẫn đó Kết quả của quá trình này sẽ là ảnh đã được cân bằng histogram, được thực hiện thông qua hàm equalize_histogram(original_image1).

Ví dụ chạy code

Hình 4.1 Ảnh trước khi thực hiện cân bằng lược đồ tần số Histogram 3

Hình 4.2 Ảnh chụp màn hình ảnh được lưu sau khi cân bằng 1

Hình 4.3 Ảnh chụp màn hình hiển thị hình ảnh trước và sau histogram equalization 1

Hình 4.6 Ảnh chụp màn hình file ảnh được lưu sau Histogram Matching 1

Hình 4.7 Ảnh chụp màn hình hiện thị hình ảnh trước và sau Histogram Matching

Hình 4.8 Ảnh trước khi thực hiện cân bằng lược đồ tần số Histogram 4

Hình 4.9 Ảnh chụp màn hình ảnh được lưu sau khi cân bằng 2

Hình 4.10 Ảnh chụp màn hình hiển thị hình ảnh trước và sau histogram equalization 2

Hình 4.13 Ảnh chụp màn hình file ảnh được lưu sau Histogram Matching 2

Hình 4.14 Ảnh chụp màn hình hiện thị hình ảnh trước và sau Histogram

Ngày đăng: 03/12/2024, 21:25

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w