2.3.4.Bộ lọc nhiễu Gaussian (Gaussian Filter)
2.3.4.1.Tổng quan chung về lọc nhiễu
Ảnh thu nhận được thường sẽ bị nhiễu nên cần phải loại bỏ nhiễu. Các tốn tử khơng gian dùng trong kỹ thuật tăng cường ảnh được phân nhóm theo cơng dụng: làm trơn nhiễu, nổi biên. Để làm trơn nhiễu hay tách nhiễu, người ta sử dụng và chia ra làm 2 loại: lọc tuyến tính (lọc trung bình, lọc Gauss,..) hoặc lọc phi tuyến (trung vị, lọcBilateral,..). 4
xây dựng trên trên việc tính tốn các Kernel.
Kernel được biết đến là một ma trận lõi phục vụ cho các mục đích như làm mờ, làm sắc nét, phác thảo… Chúng còn được sử dụng trong học máy để trích xuất các đặc trưng. Nó cịn được gọi với tên gọi ma trận tích chập hai chiều.
0 - 1 0 - 1 5 - 1 0 - 1 0 Hình 2. 16 Kernel 3x3.
Tích chập hai chiều là mơ hình tốn lọc nhiễu, được đề xuất cho dữ liệu ảnh nhằm tìm ra các bộ lọc phù hợp cho hình ảnh vào những năm 1980. Tích chập 2 chiều sẽ kết hợp ma trận ảnh đầu vào và ma trận kenel (ma trận lõi). Từ đó tính tốn lại các pixel hình ảnh và tạo ra một ảnh mới có ít nhiễu hơn.
Việc lọc nhiễu áp dụng trên ảnh xám phương pháp được sử dụng sẽ là tích chập 2 chiều đơn kênh. Để tính được giá trị đầu ra của pixel, kenel sẽ thực hiện các bước sau:
Bước 1: Kenel có f phần tử sẽ được đặt tương ứng với f phần tử đầu tiên của đầu vào.
Bước 2: Nhân từng phần tử tương ứng của kenel và pixel ảnh đầu vào cộng các giá trị đó lại và chia cho f phần tử sẽ có được một giá trị pixel tương ứng cho đầu ra.
Bước 3: Kenel lần lượt di chuyển trái sang phải trên xuống dưới và tính tốn lại ở bước 2. Đến khi hết phần tử thì dừng.
Hình 2. 17 Hình ảnh mơ tả hoạt động của kenel
Tuy nhiên việc di chuyển như vậy làm cho kích thước ảnh đầu vào và ảnh đầu ra sẽ có sự khác biệt. Để có thể giữ ngun kích thước cho hình ảnh thì khái niệm thêm lề được tạo ra. Thêm lề được định nghĩa là P hàng/ cột có giá trị bằng khơng sẽ được thêm vào ở lề ngang/ dọc tương ứng của ảnh đầu vào.
Hình 2. 18 Hình ảnh mơ tả hoạt động của kenel
Để hiểu rõ hơn cách hoạt động của bộ lọc, chúng ta cùng xét ví dụ sau:
Với hình ảnh đầu vào là ảnh xảm có giá trị các điểm ảnh biến thiên từ 0 đến 255 như hình dưới đây
Xét trên kernel 3x3 như sau:
0,0625 0,125 0,0625 0,125 0,25 0,125 0,0625 0,125 0,0625
Quá trình làm trơn hình ảnh được mơ tả như sau :
2.3.4.2.Theo dõi đối tượng
Phương pháp MedianFlow là thuật toán theo dõi đối tượng theo cả hướng tiến và lùi. Phương pháp này có khả năng tính tốn được quỹ đạo chuyển động của vật thể. Nhờ vào khả năng tính tốn các quỹ đạo, thuật toán giảm thiểu được các lỗi khi bám theo vật. Đồng thời dựa vào khung hình trước và sau của video(camera) thuật tốn có thể tự chọn quỹ đạo có tính tin cậy cao để tiến hành bám theo chuyển động của vật. Nếu việc bám theo chuyển động xảy ra lỗi, thuật toán sẽ trả giá trị để báo cho người dùng.
Hình 2. 21 Lưu đồ giải thuật MedianFlow
2.3.4.3.Bộ lọc Gaussian
Bộ lọc Gauss được cho là bộ lọc hữu ích nhất, được thực hiện bằng cách nhân chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu ra.
Ý tưởng chung là giá trị mỗi điểm ảnh sẽ phụ thuộc nhiều vào các điểm ảnh ở gần hơn là các điểm ảnh ở xa. Trọng số của sự phụ thuộc được lấy theo hàm Gauss (cũng được sử dụng trong quy luật phân phối chuẩn).
Hình 2. 22 Biểu diễn ma trận lọc Gauss
Giả sử ảnh là một chiều. Điểm ảnh ở trung tâm sẽ có trọng số lớn nhất. Các điểm ảnh ở càng xa trung tâm sẽ có trọng số giảm dần khi khoảng cách từ chúng tới điểm trung tâm tăng lên. Như vậy điểm càng gần trung tâm sẽ càng đóng góp nhiều hơn vào giá trị điểm trung tâm. 5
Trong OpenCV chúng ta sử dụng hàm sau để lọc Gauss:
Hình 2. 23 Code thực tế lọc Gauss với Python- OpenCV
Dưới đây là kết quả lọc sử dụng phép lọc Gauss. Có thể thấy kết quả lọc (Gauss noise) rất tốt mà hình ảnh khơng bị nhịe nhiều. 5
Hình 2. 24 Kết quả sử dụng bộ lọc Gauss
2.3.5.Phương pháp phát hiện biên Canny
2.3.5.1.Tổng quan chung về phương pháp phát hiện biên
Biên dạng của đối tượng là một trong những vấn đền ta cần quan tâm trong xử lý ảnh. Vì ở giai đoạn phân đoạn ảnh chủ yếu dựa vào biên.
Điểm biên: Một điểm ảnh được coi là điểm biên nếu có sự thay đổi nhanh hoặc đột ngột về mức xám (hoặc màu). Ví dụ trong ảnh nhị phân, điểm đen gọi là điểm biên nếu lân cận nó có ít nhất một điểm trắng. Đường biên (đường bao: boundary): tập hợp các điểm biên liên tiếp tạo thành một đường biên hay đường bao.
Ý nghĩa của đường biên trong xử lý: ý nghĩa đầu tiên của đường biên là một loại đặc trưng cục bộ tiêu biểu trong phân tích, nhận dạng ảnh. Thứ hai, người ta sử dụng biên làm phân cách các vùng xám (màu) cách biệt. Ngược lại, người ta cũng sử dụng các vùng ảnh để tìm đường phân cách. Tầm quan trọng của biên: để thấy rõ tầm quan trọng của biên, xét ví dụ sau: khi người họa sỹ muốn vẽ một danh nhân, họa sỹ chỉ cần vẽ vài đường nứt tốc họa mà khơng cần vẽ một cách đầy đủ.
Hình 2. 25 Hình tách biên
❖ Điểm biên: Một điểm ảnh được coi là điểm biên nếu có sự thay đổi nhanh hoặc đột ngột về mức xám (hoặc màu). Ví dụ trong ảnh nhị phân, điểm đen gọi là điểm biên nếu lân cận nó có ít nhất một điểm trắng. 4
❖ Đường biên (đường bao: boundary): tập hợp các điểm biên liên tiếp tạo thành một đường biên hay đường bao. 4
❖ Ý nghĩa của đường biên trong xử lý: ý nghĩa đầu tiên của đường biên là một loại đặc trưng cục bộ tiêu biểu trong phân tích, nhận dạng ảnh. Thứ hai, người ta sử dụng biên làm phân cách các vùng xám (màu) cách biệt. Ngược lại, người ta cũng sử dụng các vùng ảnh để tìm đường phân cách. Tầm quan trọng của biên: để thấy rõ tầm quan trọng của biên, xét ví dụ sau: khi người họa sỹ muốn vẽ một danh nhân, họa sỹ chỉ cần vẽ vài đường nét tốc họa mà không cần vẽ một cách đầy đủ. 4
❖ Mơ hình biểu diễn đường biên, theo tốn học: điểm ảnh có sự biến đổi mức xám u(x) một cách đột ngột theo hình dưới.
2.3.5.2.Phương pháp phát hiện biên Canny
Phương pháp này sử dụng hai mức ngưỡng cao và thấp. Ban đầu ta dùng mức ngưỡng cao để tìm điểm bắt đầu của biên, sau đó chúng ta xác định hướng phát triển của biên dựa vào các điểm ảnh liên tiếp có giá trị lớn hơn mức ngưỡng thấp. Ta chỉ loại bỏ các điểm có giá trị nhỏ hơn mức ngưỡng thấp. Các đường biên yếu sẽ được chọn nếu chúng được liên kết với các đường biên khỏe. Phương pháp Canny bao gồm các bước sau: 6
Bước 1: Trước hết dùng bộ lọc Gaussian để làm mịn ảnh.
6
Bước 2: Sau đó tính tốn gradient của đường biên của ảnh đã được làm mịn.
6 6 G' ( x) = − − x 2 2 2 C x, y=− C x, y=− 2 e − x 2
Bước 3: Tiếp theo là loại bỏ những điểm không phải là cực đại.
Bước 4: Bước cuối cùng là loại bỏ những giá trị nhỏ hơn mức ngưỡng.
Phương pháp này hơn hẳn các phương pháp khác do ít bị tác động của nhiễu và cho khả năng phát hiện các biên yếu. Nhược điểm của phương pháp này là nếu chọn ngưỡng quá thấp sẽ tạo ra biên không đúng, ngược lại nếu chọn ngưỡng quá cao thì nhiều thơng tin quan trọng của biên sẽ bị loại bỏ. Căn cứ vào mức ngưỡng đã xác định trước, ta sẽ quyết định những điểm thuộc biên thực hoặc không thuộc biên. Nếu mức ngưỡng càng thấp, số đường biên được phát hiện càng nhiều (nhưng kèm theo là nhiễu và số các đường biên giả cũng xuất hiện càng nhiều). Ngược lại nếu ta đặt mức ngưỡng càng cao, ta có thể bị mất những đường biên mờ hoặc các đường biên sẽ bị đứt đoạn. 6
Phương pháp Canny có các ưu điểm sau:
⚫ Cực đại hóa tỷ số tín hiệu trên nhiễu làm cho việc phát hiện các biên thực càng chính xác.
⚫ Đạt được độ chính xác cao của đường biên thực.
⚫ Làm giảm đến mức tối thiểu số các điểm nằm trên đường biên nhằm tạo ra các đường biên mỏng, rõ. 6
chuẩn để xác định các vùng liên thơng có thể là cùng mức xám, cùng màu hay cùng độ nhóm. 4
Q trình phân đoạn ảnh nhằm tách đối tượng cần khảo sát ra khỏi phần nội dung dung còn lại của ảnh, hay phân chia các đối tượng trong ảnh thành những đối tượng riêng biệt. Như vậy quá trình phân đoạn ảnh là quá trình giảm bớt số lượng thơng tin trong ảnh và chỉ giữ lại những thông tin cần thiết cho ứng dụng. Do đó phân đoạn ảnh là q trình loại bỏ các đối tượng không quan tâm trong ảnh. Phương pháp phân đoạn ảnh này hiệu quả lớn đối với ảnh nhị phân, văn bản in hay đồ họa... 4
.Dựa vào đặc tính vật lý của vùng ảnh, các kỹ thuật phân đoạn vùng có thể được chia làm 3 loại:
❖ Các kỹ thuật cục bộ: dựa trên các đặc tính cục bộ của các điểm ảnh và các lân cận của nó
❖ Các kỹ thuật tổng thể: phân đoạn một ảnh dựa trên cơ sở của thông tin lấy từ tổng thể như sử dụng biểu đồ mức xám histogram.
❖ Các kỹ thuật chia, nối và phát triển: dựa trên các khái niệm tương đồng về hình dạng và tính đồng nhất. Hai vùng có thể được nối lại với nhau và liền kề bên nhau. Các vùng khơng đồng nhất có thể được chia thành các vùng nhỏ. Một vùng có thể được phát triển bằng các nối các điểm ảnh sao cho nó đồng nhất với nhau. 4
2.4.GIỚI THIỆU NGÔN NGỮ PYTHON VÀ THƯ VIỆN OPENCV
2.4.1Ngôn ngữ Python
2.4.1.1.Giới thiệu về ngôn ngữ Python
Python là một ngôn ngữ lập trình được sử dụng phổ biến ngày nay từ trong môi trường học đường cho tới các dự án lớn. Ngôn ngữ phát triển nhiều loại ứng dụng, phần mềm khác nhau như các chương trình chạy trên desktop, server, lập trình các ứng dụng web... Ngồi ra Python cũng là ngơn ngữ ưa thích trong xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning. Ban đầu, Python được phát triển để chạy trên nền Unix, nhưng sau này, nó đã chạy trên mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. . 4
2.4.1.2.Đặc điểm nổi bật của ngôn ngữ Python
Python là ngơn ngữ có hình thức đơn giản, cú pháp ngắn gọn, sử dụng một số lượng ít các từ khố, do đó Python là một ngôn ngữ dễ học đối với người mới bắt đầu tìm
hiểu. Python là ngơn ngữ có mã lệnh (source code hay đơn giản là code) không mấy phức tạp. Python có nhiều ứng dụng trên nhiều nền tảng, chương trình phần mềm viết bằng ngơn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhau bao gồm Windows, Mac OSX và Linux. 4
Nên do đó nhóm em chọn ngơn ngữ Python để lập trình thay vì những ngơn ngữ khác để tiến hành nghiên cứu và thực hiện xử lý ảnh.
2.4.2.Thư viện OpenCV
2.4.2.1.Giới thiệu
Hình 2. 28 Thư viện OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở, nó là miễn phí cho những ai bắt đầu tiếp cận với các học thuật. OpenCV được ứng dụng trong nhiều lĩnh vực như cho thị giác máy tính hay xử lý ảnh và máy học. Thư viện được lập trình trên các ngơn ngữ cấp cao: C++, C, Python, hay Java và hỗ trợ trên các nền tảng Window, Linux, Mac OS, iOS và Android. Opencv có rất nhiều ứng dụng: Nhận dạng ảnh, xử lý hình ảnh, phục hồi hình ảnh/video, thực tế ảo,… Ở đề tài này thư viện OpenCV được chạy trên ngôn ngữ Python. OpenCV được dùng làm thư viện chính để xử lý hình ảnh đầu vào và sau đó đi nhận dạng ảnh. 7
2.4.2.2.Đặc điểm
➢ Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh. ➢ Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh.
➢ Phát hiện các đối tượng xác định được xác định trước như khuôn mặt, mắt, xe trong video hoặc hình ảnh.
➢ Phân tích video,... ước lượng chuyển động của nó, trừ nền ra và theo dõi các đối tượng trong video. 7
Chính vì những đặc điểm trên, nhóm em quyết định dùng thư viện OpenCV làm thư viện chính, viết trên ngơn ngữ Python để thực hiện đề tài.
2.5.PHƯƠNG PHÁP ĐÁNH GIÁ CHẤT LƯỢNG CÀ CHUA
Cà chua là một trong những mặt hàng nông sản cũng như rau quả thực phẩm quen thuộc với chúng ta. Quá trình sinh trưởng của quả cà chua từ lúc kết quả đến lúc chín hồn tồn trải qua các giai đoạn biến đổi hình thái về màu sắc mà bằng mắt thường, con người có thể thấy được sự thay đổi đó. Các giai đoạn chuyển hóa của quả cà chua được trình bày cụ thể sau đây: 8
❖ Thời kỳ quả xanh: Quả và hạt phát triển chưa hoàn thiện. Nếu thu hái quả
vào lúc này và thông qua thúc chín tới thì quả khơng bình thường, khơng có hương vị, khơng có màu sắc đặc trưng của giống.
❖ Thời kỳ quả chín xanh: chất keo bao quanh hạt được hình thành, quả chưa
có màu hồng hoặc màu vàng. Nếu thúc chín thì quả sẽ thể hiện màu sắc của giống nhưng hương vị khơng rõ như quả chín trên cây.
❖ Thời kỳ chín vàng: Đỉnh quả xuất hiện màu vàng hoặc màu hồng với diện
tích bề mặt chiếm khoảng 10%.
❖ Thời kỳ chuyển màu: Diện tích bề mặt 10-30%, có màu vàng hoặc đỏ nhạt.
❖ Thời kỳ quả chín hồng: diện tích bề mặt 30-60%, có màu đỏ nhạt hoặc vàng.
❖ Thời kỳ chín đỏ: diện tích bề mặt quả 90% có màu đỏ. 8
Ở phạm vi của đề tài, những quả cà chua sẽ được phân thành 3 nhóm quả có màu như sau, dựa trên đặc điểm về màu sắc ở các giai đoạn:
Loại 1: Quả chín hồng và quả chín đỏ. Loại 2: Quả chín vàng hoặc vàng xanh Loại 3: Quả xanh hoặc quả non.
Cơ sở và các tiêu chí phân loại:
Trong q trình thực hiện đề tài tụi em có tìm hiểu về các tiêu chuẩn xuất nhập khẩu nơng sản trong nước, nghiên cứu q trình phát triển của cà chua và giá cả thị trường của các loại cà chua.
=> Nhận thấy có 3 giai đoạn rõ rệt:
- Khi cà chua mới được hình thành màu xanh, non và khơng có chất dinh dưỡng. Khi tiêu thụ sẽ dễ gây ngộ độc thực phẩm nhiều hơn. Các triệu chứng ngộ độc do ăn cà chua xanh thường là buồn nôn, nôn mửa, tiết nước bọt, yếu sức, mệt mỏi và… thậm chí trường hợp nghiêm trọng có thể đe dọa tính mạng
- Cà chua vàng thì đang trong giai đoạn phát triển nên có để chờ chín 1 vài ngày thì sẽ sử dụng được.
- Cà chua đỏ là trạng thái hoạn thiện nhất, có thể sử dụng rộng rãi trên thị trường làm thực phẩm hoặc mỹ phẫm => năng suất tiêu thụ lớn.
2.5.1.Các màu sắc cơ bản của sản phẩm