Chúng ta có thể đọc hình ảnh bằng Python không?

Quá trình xử lý ảnh hình thái cố gắng loại bỏ các điểm không hoàn hảo khỏi ảnh nhị phân vì các vùng nhị phân được tạo ra bằng cách tạo ngưỡng đơn giản có thể bị biến dạng do nhiễu. Nó cũng giúp làm mịn hình ảnh bằng các thao tác mở và đóng

Các hoạt động hình thái có thể được mở rộng cho các hình ảnh thang độ xám. Nó bao gồm các hoạt động phi tuyến tính liên quan đến cấu trúc của các tính năng của một hình ảnh. Nó phụ thuộc vào thứ tự pixel có liên quan mà còn phụ thuộc vào giá trị số của chúng. Kỹ thuật này phân tích một hình ảnh bằng cách sử dụng một mẫu nhỏ được gọi là phần tử cấu trúc được đặt trên các vị trí có thể khác nhau trong hình ảnh và được so sánh với các pixel lân cận tương ứng. Phần tử cấu trúc là một ma trận nhỏ có giá trị 0 và 1

Hãy cùng xem hai hoạt động cơ bản của xử lý hình ảnh hình thái học, Dilation và Erosion

  • thao tác giãn nở thêm pixel vào ranh giới của đối tượng trong ảnh
  • hoạt động xói mòn loại bỏ các pixel khỏi ranh giới đối tượng.  

Số lượng pixel bị xóa hoặc thêm vào ảnh gốc phụ thuộc vào kích thước của phần tử cấu trúc.  

Tại thời điểm này, bạn có thể đang nghĩ "yếu tố cấu trúc là gì?"

Phần tử cấu trúc là một ma trận chỉ bao gồm các số 0 và 1 có thể có bất kỳ hình dạng và kích thước tùy ý. Nó được định vị ở tất cả các vị trí có thể có trong ảnh và nó được so sánh với vùng lân cận pixel tương ứng

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Phần tử cấu trúc hình vuông 'A' vừa với đối tượng chúng ta muốn chọn, 'B' cắt đối tượng và 'C' nằm ngoài đối tượng

Mẫu không-một xác định cấu hình của phần tử cấu trúc. Đó là theo hình dạng của đối tượng mà chúng ta muốn chọn. Trung tâm của phần tử cấu trúc xác định pixel đang được xử lý

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Chúng ta có thể đọc hình ảnh bằng Python không?
sự giãn nở. Nguồn

Chúng ta có thể đọc hình ảnh bằng Python không?
Xói mòn. Nguồn

2. Xử lý ảnh Gaussian

Độ mờ Gaussian còn được gọi là làm mịn gaussian, là kết quả của việc làm mờ hình ảnh bằng hàm Gaussian

Nó được sử dụng để giảm nhiễu hình ảnh và giảm chi tiết. Hiệu ứng hình ảnh của kỹ thuật làm mờ này tương tự như nhìn một hình ảnh qua màn hình mờ. Đôi khi nó được sử dụng trong thị giác máy tính để nâng cao hình ảnh ở các tỷ lệ khác nhau hoặc như một kỹ thuật tăng cường dữ liệu trong học sâu

Hàm gaussian cơ bản trông giống như

Chúng ta có thể đọc hình ảnh bằng Python không?

Trong thực tế, tốt nhất là tận dụng đặc tính có thể tách rời của Gaussian blur bằng cách chia quá trình thành hai lần. Trong lần đầu tiên, hạt nhân một chiều được sử dụng để làm mờ hình ảnh chỉ theo hướng ngang hoặc dọc. Trong lần thứ hai, cùng một hạt nhân một chiều được sử dụng để làm mờ theo hướng còn lại. Hiệu ứng thu được giống như kết hợp với nhân hai chiều trong một lần chạy. Hãy xem một ví dụ để hiểu bộ lọc gaussian làm gì với hình ảnh

Nếu chúng ta có một bộ lọc được phân phối bình thường và khi nó được áp dụng cho một hình ảnh, kết quả sẽ như thế này

Chúng ta có thể đọc hình ảnh bằng Python không?

Chúng ta có thể đọc hình ảnh bằng Python không?

Chúng ta có thể đọc hình ảnh bằng Python không?

Nguyên bản

Lọc

Kết quả

Nguồn

Bạn có thể thấy rằng một số cạnh có ít chi tiết hơn. Bộ lọc mang lại nhiều trọng lượng hơn cho các pixel ở trung tâm so với các pixel ở xa trung tâm. Bộ lọc Gaussian là bộ lọc thông thấp i. e. làm suy yếu tần số cao. Nó thường được sử dụng trong phát hiện cạnh

3. Biến đổi Fourier trong xử lý ảnh

Biến đổi Fourier chia ảnh thành các thành phần sin và cosin.  

Nó có nhiều ứng dụng như tái tạo hình ảnh, nén hình ảnh hoặc lọc hình ảnh.  

Vì chúng ta đang nói về hình ảnh, chúng ta sẽ xem xét biến đổi Fourier rời rạc

Hãy xem xét một hình sin, nó bao gồm ba thứ

  • Độ lớn – liên quan đến độ tương phản
  • Tần số không gian – liên quan đến độ sáng
  • Pha – liên quan đến thông tin màu sắc

Hình ảnh trong miền tần số trông như thế này

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Công thức cho phép biến đổi phạm vi rời rạc 2D là

Chúng ta có thể đọc hình ảnh bằng Python không?

Trong công thức trên, f(x,y) là ảnh

Biến đổi phạm vi nghịch đảo chuyển đổi biến đổi trở lại hình ảnh. Công thức cho phép biến đổi phạm vi rời rạc 2D nghịch đảo là

Chúng ta có thể đọc hình ảnh bằng Python không?

4. Phát hiện cạnh trong xử lý ảnh

Phát hiện cạnh là một kỹ thuật xử lý ảnh để tìm ranh giới của các đối tượng trong ảnh. Nó hoạt động bằng cách phát hiện sự gián đoạn về độ sáng

Điều này có thể rất có lợi trong việc trích xuất thông tin hữu ích từ hình ảnh vì hầu hết thông tin hình dạng được đặt trong các cạnh. Các phương pháp phát hiện cạnh cổ điển hoạt động bằng cách phát hiện sự gián đoạn về độ sáng.  

Nó có thể nhanh chóng phản ứng nếu một số nhiễu được phát hiện trong hình ảnh trong khi phát hiện các biến thể của mức xám. Các cạnh được định nghĩa là cực đại cục bộ của gradient.  

Thuật toán phát hiện cạnh phổ biến nhất là thuật toán phát hiện cạnh sobel. Toán tử phát hiện Sobel được tạo thành từ các hạt tích chập 3*3. Một hạt nhân đơn giản Gx và một hạt nhân xoay 90 độ Gy. Các phép đo riêng biệt được thực hiện bằng cách áp dụng riêng cả hạt nhân cho hình ảnh

Và,

* biểu thị hoạt động tích chập xử lý tín hiệu 2D

Độ dốc kết quả có thể được tính như

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

5. Xử lý ảnh Wavelet

Chúng tôi đã thấy một biến đổi Fourier nhưng nó chỉ giới hạn ở tần số. Wavelet xem xét cả thời gian và tần số. Biến đổi này phù hợp với các tín hiệu không cố định.  

Chúng tôi biết rằng các cạnh là một trong những phần quan trọng của hình ảnh, trong khi áp dụng các bộ lọc truyền thống, chúng tôi nhận thấy rằng nhiễu được loại bỏ nhưng hình ảnh bị mờ. Biến đổi wavelet được thiết kế sao cho chúng ta có được độ phân giải tần số tốt cho các thành phần tần số thấp. Dưới đây là ví dụ biến đổi wavelet 2D

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Xử lý hình ảnh bằng Mạng thần kinh

Mạng thần kinh là mạng nhiều lớp bao gồm các nơ-ron hoặc nút. Những nơ-ron này là đơn vị xử lý cốt lõi của mạng nơ-ron. Chúng được thiết kế để hoạt động như bộ não con người. Họ lấy dữ liệu, rèn luyện bản thân để nhận ra các mẫu trong dữ liệu và sau đó dự đoán đầu ra

Một mạng lưới thần kinh cơ bản có ba lớp

  1. lớp đầu vào
  2. lớp ẩn
  3. lớp đầu ra

Chúng ta có thể đọc hình ảnh bằng Python không?
Mạng nơ-ron cơ bản. Nguồn

Các lớp đầu vào nhận đầu vào, lớp đầu ra dự đoán đầu ra và các lớp ẩn thực hiện hầu hết các phép tính. Số lượng các lớp ẩn có thể được sửa đổi theo yêu cầu. Nên có ít nhất một lớp ẩn trong mạng thần kinh

Hoạt động cơ bản của mạng nơ-ron như sau

  1. Hãy xem xét một hình ảnh, mỗi pixel được cung cấp làm đầu vào cho từng nơ-ron của lớp đầu tiên, các nơ-ron của một lớp được kết nối với các nơ-ron của lớp tiếp theo thông qua các kênh.  
  2. Mỗi kênh này được gán một giá trị số được gọi là trọng số.  
  3. Các đầu vào được nhân với các trọng số tương ứng và tổng trọng số này sau đó được cung cấp làm đầu vào cho các lớp ẩn.  
  4. Đầu ra từ các lớp ẩn được chuyển qua một chức năng kích hoạt sẽ xác định xem nơ-ron cụ thể có được kích hoạt hay không.  
  5. Các tế bào thần kinh được kích hoạt sẽ truyền dữ liệu đến các lớp ẩn tiếp theo. Theo cách này, dữ liệu được truyền qua mạng, điều này được gọi là Tuyên truyền chuyển tiếp.  
  6. Trong lớp đầu ra, nơ ron có giá trị cao nhất sẽ dự đoán đầu ra. Các đầu ra này là các giá trị xác suất
  7. Đầu ra dự đoán được so sánh với đầu ra thực tế để thu được lỗi. Thông tin này sau đó được chuyển trở lại qua mạng, quá trình này được gọi là Backpropagation
  8. Dựa trên thông tin này, các trọng số được điều chỉnh. Chu kỳ lan truyền tiến và lùi này được thực hiện nhiều lần trên nhiều đầu vào cho đến khi mạng dự đoán đầu ra chính xác trong hầu hết các trường hợp
  9. Điều này kết thúc quá trình đào tạo của mạng lưới thần kinh. Thời gian đào tạo mạng lưới thần kinh có thể tăng cao trong một số trường hợp

Trong hình ảnh bên dưới, ai là tập hợp các đầu vào, wi là trọng số, z là đầu ra và g là bất kỳ chức năng kích hoạt nào

Chúng ta có thể đọc hình ảnh bằng Python không?
Hoạt động trong một nơ-ron duy nhất. Nguồn

Dưới đây là một số hướng dẫn chuẩn bị dữ liệu để xử lý ảnh.  

  • Cần cung cấp thêm dữ liệu cho mô hình để có kết quả tốt hơn
  • Bộ dữ liệu hình ảnh phải có chất lượng cao để có được thông tin rõ ràng hơn, nhưng để xử lý chúng, bạn có thể yêu cầu mạng lưới thần kinh sâu hơn
  • Trong nhiều trường hợp, hình ảnh RGB được chuyển đổi thành thang độ xám trước khi đưa chúng vào mạng thần kinh

Các loại mạng thần kinh

Mạng thần kinh tích chập

Mạng thần kinh tích chập, nói ngắn gọn là ConvNets có ba lớp

  • Lớp chập (CONV). Chúng là khối xây dựng cốt lõi của CNN, nó chịu trách nhiệm thực hiện phép toán tích chập. Phần tử liên quan đến việc thực hiện thao tác tích chập trong lớp này được gọi là Hạt nhân/Bộ lọc (ma trận). Nhân thực hiện các dịch chuyển ngang và dọc dựa trên tốc độ sải chân cho đến khi toàn bộ hình ảnh được duyệt qua

Chúng ta có thể đọc hình ảnh bằng Python không?
Chuyển động của hạt nhân. Nguồn

  • Lớp tổng hợp (POOL). Lớp này chịu trách nhiệm giảm kích thước. Nó giúp giảm sức mạnh tính toán cần thiết để xử lý dữ liệu. Có hai loại gộp. Tổng hợp tối đa và tổng hợp trung bình. Tổng hợp tối đa trả về giá trị tối đa từ khu vực được bao phủ bởi hạt nhân trên hình ảnh. Tổng hợp trung bình trả về giá trị trung bình của tất cả các giá trị trong một phần của hình ảnh được bao phủ bởi hạt nhân
Chúng ta có thể đọc hình ảnh bằng Python không?
hoạt động tổng hợp. Nguồn
  • Lớp kết nối đầy đủ (FC). Lớp được kết nối đầy đủ (FC) hoạt động trên một đầu vào phẳng trong đó mỗi đầu vào được kết nối với tất cả các nơ-ron. Nếu có, các lớp FC thường được tìm thấy ở cuối kiến ​​trúc CNN

Chúng ta có thể đọc hình ảnh bằng Python không?
Các lớp được kết nối đầy đủ. Nguồn

CNN chủ yếu được sử dụng trong việc trích xuất các tính năng từ hình ảnh với sự trợ giúp của các lớp của nó. CNN được sử dụng rộng rãi trong phân loại hình ảnh trong đó mỗi hình ảnh đầu vào được chuyển qua một loạt các lớp để nhận giá trị xác suất trong khoảng từ 0 đến 1

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Mạng đối thủ tạo

Các mô hình tổng quát sử dụng phương pháp học tập không giám sát (có hình ảnh nhưng không có nhãn được cung cấp).  

GAN bao gồm hai mô hình Generator và Discriminator. Trình tạo học cách tạo hình ảnh giả trông như thật để đánh lừa người phân biệt đối xử và Người phân biệt học cách phân biệt hình ảnh giả với hình ảnh thật (nó cố gắng không để bị lừa).  

Trình tạo không được phép xem hình ảnh thật, do đó, nó có thể tạo ra kết quả kém trong giai đoạn bắt đầu trong khi bộ phân biệt được phép xem hình ảnh thật nhưng chúng bị lẫn lộn với những hình ảnh giả do trình tạo tạo ra mà nó phải phân loại là thật hay giả. .  

Một số nhiễu được cung cấp làm đầu vào cho trình tạo để nó có thể tạo ra các ví dụ khác nhau mỗi lần và không phải cùng một loại hình ảnh. Dựa trên điểm số được dự đoán bởi bộ phân biệt, bộ tạo sẽ cố gắng cải thiện kết quả của nó, sau một thời điểm nhất định, bộ tạo sẽ có thể tạo ra những hình ảnh khó phân biệt hơn, tại thời điểm đó, người dùng sẽ hài lòng với . Discriminator cũng tự cải thiện khi ngày càng có nhiều hình ảnh chân thực hơn ở mỗi vòng từ trình tạo

Các loại GAN phổ biến là Deep Convolutional GAN ​​(DCGAN), GAN có điều kiện (cGAN), StyleGAN, CycleGAN, DiscoGAN, GauGAN, v.v.

GAN rất tốt cho việc tạo và thao tác hình ảnh. Một số ứng dụng của GAN bao gồm. Lão hóa khuôn mặt, Trộn ảnh, Siêu phân giải, Inpainting ảnh, Dịch quần áo.  

Chúng ta có thể đọc hình ảnh bằng Python không?
Nguồn

Công cụ xử lý ảnh

1. OpenCV

Nó là viết tắt của Open Source Computer Vision Library. Thư viện này bao gồm khoảng hơn 2000 thuật toán được tối ưu hóa hữu ích cho thị giác máy tính và học máy. Có một số cách bạn có thể sử dụng opencv trong xử lý ảnh, một số cách được liệt kê bên dưới

  • Chuyển đổi hình ảnh từ không gian màu này sang không gian màu khác i. e. như giữa BGR và HSV, BGR và màu xám, v.v.
  • Thực hiện tạo ngưỡng trên hình ảnh, như, tạo ngưỡng đơn giản, tạo ngưỡng thích ứng, v.v.  
  • Làm mịn hình ảnh, như áp dụng các bộ lọc tùy chỉnh cho hình ảnh và làm mờ hình ảnh
  • Thực hiện các phép toán hình thái trên hình ảnh
  • Xây dựng hình ảnh kim tự tháp
  • Trích xuất nền trước từ hình ảnh bằng thuật toán GrabCut
  • Phân đoạn ảnh bằng thuật toán đầu nguồn

Tham khảo liên kết này để biết thêm chi tiết

2. Scikit-hình ảnh

Nó là một thư viện nguồn mở được sử dụng để xử lý trước hình ảnh. Nó sử dụng máy học với các chức năng tích hợp và có thể thực hiện các thao tác phức tạp trên hình ảnh chỉ với một vài chức năng.  

Nó hoạt động với các mảng có nhiều mảng và là một thư viện  khá đơn giản ngay cả đối với những người mới làm quen với python. Một số thao tác có thể được thực hiện bằng cách sử dụng hình ảnh scikit là

  • Để triển khai các hoạt động tạo ngưỡng, hãy sử dụng phương thức try_all_threshold() trên hình ảnh. Nó sẽ sử dụng bảy thuật toán ngưỡng toàn cầu. Đây là trong mô-đun bộ lọc
  • Để triển khai phát hiện cạnh, hãy sử dụng phương thức sobel() trong mô-đun bộ lọc. Phương pháp này yêu cầu hình ảnh thang độ xám 2D làm đầu vào, vì vậy chúng tôi cần chuyển đổi hình ảnh thành thang độ xám
  • Để triển khai làm mịn gaussian, hãy sử dụng phương thức gaussian() trong mô-đun bộ lọc
  • Để áp dụng cân bằng biểu đồ, hãy sử dụng mô-đun phơi sáng, để áp dụng cân bằng biểu đồ thông thường cho ảnh gốc, hãy sử dụng phương thức equalize_hist() và để áp dụng cân bằng thích ứng, hãy sử dụng phương thức equalize_adapthist()
  • Để xoay hình ảnh, hãy sử dụng hàm rotate() trong mô-đun biến đổi
  • Để thay đổi tỷ lệ hình ảnh, hãy sử dụng chức năng rescale() từ mô-đun biến đổi
  • Để áp dụng các hoạt động hình thái học, hãy sử dụng hàm binary_erosion() và binary_dilation() trong mô-đun hình thái học

3. PIL/gối

PIL là viết tắt của Thư viện hình ảnh Python và Gối là ngã ba PIL thân thiện của Alex Clark và Người đóng góp. Đó là một trong những thư viện mạnh mẽ. Nó hỗ trợ nhiều định dạng hình ảnh như PPM, JPEG, TIFF, GIF, PNG và BMP.  

Nó có thể giúp bạn thực hiện một số thao tác trên hình ảnh như xoay, thay đổi kích thước, cắt xén, thang độ xám, v.v. Hãy xem qua một số thao tác đó

Để thực hiện các thao tác thao tác, có một mô-đun trong thư viện này có tên là Hình ảnh.  

  • Để tải một hình ảnh, hãy sử dụng phương thức open()
  • Để hiển thị một hình ảnh sử dụng phương thức show()
  • Để biết định dạng tệp, hãy sử dụng thuộc tính định dạng
  • Để biết kích thước của hình ảnh sử dụng thuộc tính kích thước
  • Để biết về định dạng pixel, hãy sử dụng thuộc tính chế độ
  • Để lưu tệp hình ảnh sau khi xử lý mong muốn, hãy sử dụng phương thức save(). Gối lưu file ảnh định dạng png
  • Để thay đổi kích thước hình ảnh, hãy sử dụng phương thức resize() nhận hai đối số là chiều rộng và chiều cao
  • Để cắt hình ảnh, hãy sử dụng phương thức crop() lấy một đối số làm bộ dữ liệu hộp xác định vị trí và kích thước của vùng được cắt
  • Để xoay hình ảnh, hãy sử dụng phương thức rotate() lấy một đối số là số nguyên hoặc số float biểu thị mức độ xoay
  • Để lật hình ảnh, hãy sử dụng phương thức transform() lấy một đối số trong số các đối số sau. Hình ảnh. FLIP_LEFT_RIGHT, Hình ảnh. FLIP_TOP_BOTTOM, Hình ảnh. ROTATE_90, Hình ảnh. ROTATE_180, Hình ảnh. XOAY_270.  

Đọc thêm

Hướng dẫn hình ảnh Essential Pil (Gối) (dành cho người học máy)

4. NumPy

Với thư viện này, bạn cũng có thể thực hiện các kỹ thuật hình ảnh đơn giản, chẳng hạn như lật hình ảnh, trích xuất các tính năng và phân tích chúng.  

Hình ảnh có thể được biểu diễn bằng các mảng đa chiều có nhiều khối và do đó, kiểu của chúng là NdArrays. Một hình ảnh màu là một mảng numpy với 3 chiều. Bằng cách cắt mảng đa chiều, các kênh RGB có thể được tách ra.  

Dưới đây là một số thao tác có thể được thực hiện bằng NumPy trên hình ảnh (hình ảnh được tải trong một biến có tên test_img bằng imread)

  • Để lật hình ảnh theo hướng dọc, hãy sử dụng np. flipud(test_img)
  • Để lật hình ảnh theo hướng ngang, hãy sử dụng np. fliplr(test_img)
  • To reverse the image, use test_img[::-1]  (the image after storing it as the numpy array is named as Xóa tìm kiếm hiện tại

    sao hải vương là gì. ai?

    Đó là trình theo dõi thử nghiệm và sổ đăng ký mô hình tích hợp với bất kỳ ngăn xếp MLOps nào

    Ghi nhật ký siêu dữ liệu mô hình từ mọi nơi trong quy trình của bạn. Xem kết quả trong ứng dụng web

    Xem sản phẩm

    Mục lục

    1. Xử lý ảnh là gì?
    2. Thuật toán xử lý ảnh cổ điển
    3. Xử lý hình ảnh bằng Mạng thần kinh
    4. Các loại mạng thần kinh
    5. Công cụ xử lý ảnh
    6. Bản tóm tắt

    Đọc tiếp

    Cách thực hiện khám phá dữ liệu để phân đoạn hình ảnh và phát hiện đối tượng (Những điều tôi phải học một cách khó khăn)

    Tôi đã làm việc với các vấn đề về phát hiện đối tượng và phân đoạn hình ảnh trong nhiều năm. Tôi nhận ra một điều quan trọng là mọi người không nỗ lực và tập trung vào việc khám phá dữ liệu và phân tích kết quả như họ thường làm trong bất kỳ dự án máy học phi hình ảnh nào khác.   


    Tại sao nó như vậy?

    Tôi tin rằng có hai lý do chính cho việc này

    Mọi người không hiểu sâu về các mô hình phát hiện đối tượng và phân đoạn hình ảnh và coi chúng như hộp đen, trong trường hợp đó, họ thậm chí không biết phải xem xét cái gì và giả định là gì. Nó có thể khá tẻ nhạt từ quan điểm kỹ thuật vì chúng tôi không có các công cụ khám phá dữ liệu hình ảnh tốt

    Theo tôi, bộ dữ liệu hình ảnh không thực sự là một ngoại lệ, hiểu cách điều chỉnh hệ thống để phù hợp với dữ liệu của chúng tôi là một bước quan trọng để thành công.  

    Trong bài viết này, tôi sẽ chia sẻ với bạn cách tôi tiếp cận khám phá dữ liệu cho các vấn đề về phân đoạn ảnh và phát hiện đối tượng. Đặc biệt