Hiểu chức năng lọc Gabor


9

Tôi cần triển khai tập lệnh để tạo các tính năng từ hình ảnh đầu vào bằng cách sử dụng bộ lọc Gabor. Tôi không có kinh nghiệm về sóng con và tôi chỉ học phân tích Fourier (tôi hiểu ý tưởng cơ bản đằng sau phân tích và biến đổi Fourier) vì vậy họ không thể giúp tôi hiểu bộ lọc Gabor, vì tôi cần thực hiện trong một tuần . Tôi không cần phải hiểu nền tảng của chức năng lọc Gabor, nhưng tôi muốn hiểu ở một mức độ nào đó nó là gì và nó làm gì. Các thông số là gì? Có ý nghĩa gì? Đầu ra của hàm là gì? Ví dụ: đây là công thức tôi đã sao chép từ Wikipedia :

g(x,y;λ,θ,ψ,σ,γ)= =điểm kinh nghiệm(-x'2+γ2y'22σ2)điểm kinh nghiệm(Tôi(2πx'λ+ψ))

Bây giờ câu hỏi rõ ràng của tôi là: Điều này có nghĩa là gì? Các biến có nghĩa là gì? Theo Wikipedia:

x,y: Tôi giả sử các tọa độ này chỉ định giá trị pixel của hình ảnh tại tọa độ (x,y)( 2. Điều này ổn, được hiểu )

λ: đại diện cho bước sóng của yếu tố hình sin ( yếu tố hình sin , hả? 3a. Làm thế nào để bạn chọn nó? 3b. Nó đến từ đâu? 3c. Nó là một số tùy ý hay là gì? Tự do chọn?)

θ: đại diện cho hướng bình thường đến các sọc song song của hàm Gabor (4. Điều đó có nghĩa là gì?)

ψ: là độ lệch pha (5. bù của cái gì? Giá trị này được xác định như thế nào? Nó có được tự do lựa chọn không?)

σ: là độ lệch chuẩn / độ lệch chuẩn của đường bao Gaussian (6. Cần giải thích thêm ...)

γ: là tỷ lệ khung hình không gian và chỉ định độ elip của sự hỗ trợ của hàm Gabor (7. Một lần nữa cần thêm chi tiết và giải thích thêm)

Và quan trọng nhất:

g(x,y;λ,θ,ψ,σ,γ)= =X
  1. Giá trị đầu ra là gì X? Nó có nghĩa là gì?

Như tôi đã đề cập, tôi không cần giải thích cặn kẽ về lý thuyết, bởi vì tôi cá là nó dài và đọc một cuốn sách 1000 trang về chủ đề không xác định không phải là một lựa chọn cho tôi ngay bây giờ. Tôi cần có một sự hiểu biết về hộp đen về chức năng này để tôi có thể thực hiện nó trong mã và quan trọng nhất là hiểu đầu vào là gìđầu ra là gì .

Cảm ơn bạn đã giúp đỡ !! =)

PS

Tôi đọc bài này:

/math/259877/value-of-xy-in-computing-gabor-filter-f ghép

nhưng nó không trả lời câu hỏi của tôi đủ kỹ lưỡng :)


1
Có vẻ như bạn đang cố gắng học hỏi nhiều về xử lý hình ảnh chỉ trong một tuần. Có lẽ bạn nên bắt đầu với một bộ lọc đơn giản hơn trước như sóng con Haar.
Aaron

Xin chào @anonymous! Bạn có thể liệt kê những thông số không được giải thích chính xác?
visoft

@visoft, câu trả lời của bạn không phải là một câu gọn gàng. Nó liên quan đến rất nhiều cuộc thảo luận bên ngoài. Tôi đã thêm câu trả lời của tôi. Tôi nghĩ bây giờ nó đã rõ ràng.

Bạn đã bắt đầu một tiền thưởng vì "Trong câu trả lời hiện tại, ý nghĩa của các tham số khác nhau được mô tả ở dạng từ kém. Câu trả lời cần thiết." Tôi tò mò không biết giải thích gì cần phải đọc lại.
visoft

@visoft, câu trả lời của bạn không phải là một câu gọn gàng. Nó liên quan đến rất nhiều cuộc thảo luận bên ngoài. Tôi đã thêm câu trả lời của tôi. Tôi nghĩ bây giờ nó đã rõ ràng.

Câu trả lời:


7

Việc triển khai MATLAB nằm trong câu trả lời này: https://dsp.stackexchange.com/a/14201/5737

1) Công thức wikipedia hơi quá chung chung.

2) Nếu bạn biết những điều cơ bản của biến đổi với Fourier thì về mặt thực nghiệm bạn sẽ biết rằng: Hình ảnh được xem như được hình thành bằng cách đặt một loạt các sóng hình sin có tần số khác nhau được định hướng theo mọi hướng. Mỗi "pixel" trong biến đổi cho chúng ta biết "cường độ" của sóng như vậy. Vị trí của "pixel" cho chúng ta biết tần số và hướng của sóng. Trong thực tế, người ta chỉ muốn chọn một số sóng nhất định, có tần số cụ thể và định hướng cụ thể.

Vậy là bạn đã có nó: Biến đổi Gabor là một trong nhiều bộ lọc được gọi là băng thông cho phép bạn "cắt" biến đổi Fourier và chỉ cách ly thông tin cụ thể. Một thông tin quan trọng khác là mỗi "pixel" Fourier là một giá trị phức tạp (phần thực và phần ảo)

3) Tham số: Hai tham số đã được hiển thị:

3.a) Tần số điều chỉnh f0hoặc điều chỉnh thời gian P0, hoặc là λthiết lập loại sóng xoang nào bộ lọc sẽ đáp ứng tốt nhất. (f= =1/P0= =1/λ hoặc là f= =π/λ tùy thuộc vào việc thực hiện cụ thể) Về cơ bản, nhỏ hơn P0có nghĩa là sóng xoang dày đặc hơn. Lớn hơnP0 nghĩa là sóng lớn hơn. P0 được tính bằng pixel (3, 5, 30, v.v. pixel) Không đi dưới 3 pixel hoặc xa hơn W/2 hoặc bạn nhận được hiệu ứng khó chịu. Wlà chiều rộng của hình ảnh, nếu hình ảnh là hình vuông. Bạn chỉ định điều này bằng cách sử dụng tham số P0 trong mã MATLAB.

3.b) Góc trung tâm. Những sóng này có thể có bất kỳ hướng. Bạn muốn chỉ chọn sóng ở góc cụ thể. Vì vậy, tham số thứ hai là góc điều chỉnh,θ0 hoặc là θtrong công thức của bạn. Thông thường, tính bằng radian. Định hướng trong mã MATLAB.

Người ta không thể cô lập chỉ một tần số nhất định hoặc một định hướng nhất định. (Tìm kiếm nguyên lý không chắc chắn trong sách giáo khoa. Có, tương tự như trong vật lý) Nhưng người ta có thể điều chỉnh bao nhiêu tần số gần đó sẽ bị rò rỉ. Hai tham số tiếp theo xác định rằng:

3.c) ΔF, băng thông tần số thể hiện bằng quãng tám. Các giá trị hữu ích, 1,5, 2, 3. Giá trị lớn hơn có nghĩa là thu được dải tần số rộng hơn. Có một mức giá cho một băng thông chặt chẽ hơn, một địa phương hóa không gian nghèo hơn. Tại sao, một lần nữa, sách giáo khoa. FBW trong mã MATLAB.

3.d) Δθbăng thông góc. Thể hiện bằng radian.π/3 hoặc là π/2hoạt động tốt ABW trong mã MATLAB.

Mối quan hệ giữa Δf, Δθ từ mã MATLAB và σ,γ từ Wikipedia có một công thức nhưng không cần thiết để hiểu Gabor. ψ một lần nữa không quan trọng đối với sự hiểu biết cơ bản.

Vì vậy, bạn có nó: Xtừ Wikipedia là một ma trận 2D gồm các số chứa mặt nạ tích chập. Bạn lấy hình ảnh gốc, lọc nó bằng mặt nạ chập và lấy một hình ảnh khác. Hình ảnh mới này là "phản hồi Gabor" cho hình ảnh gốc.

Mã MATLAB thực hiện hai bước này với nhau. Xây dựng bộ lọc Gabor với các tham số đã chỉ định và thực hiện tích chập. Kết quả ReConv, ImConv là các câu trả lời. Mỗi "pixel" phản hồi có một phần thực và một phần ảo. Nếu bạn muốn sử dụng mã này, bạn thường phải tính năng lượng cho phản hồi:E= =một2+b2 Ở đâu một là phần thực sự của phản hồi (ReConv) và b là phần tưởng tượng (ImConv), cho mỗi pixel.

Ở đó bạn có nó: 1) Xây dựng bộ lọc Gabor chỉ định P0,θ0,Δf,Δθ 2) Kết hợp hình ảnh của bạn với bộ lọc. Bạn sẽ nhận được hai giá trị cho mỗi pixel. 3) Tính năng lượngE và lấy cường độ phản hồi cho từng pixel trong ảnh gốc

Một trực giác khác: Giả sử bạn muốn chọn các cạnh trải dài theo hướng vuông góc với π/6và chiều rộng nhất định là 20 pixel. Bạn có thể xây dựng bộ lọc Gabor vớiP020,θ0= =π/6,Δf= =2,Δθ= =pTôi/2. HÃY CHĂM SÓC rằng không có mối quan hệ bình đẳng giữa kích thước cạnh của bạn vàP0tham số. Bạn nên thử các giá trị khác nhau và xem những gì hoạt động tốt nhất. Các tham số khác (Δf,Δθ) chạm vào chúng khi bạn có một số kinh nghiệm điều chỉnh hai cái đầu tiên.

Hy vọng nó giúp!

Cristi

Cập nhật

Đây là một trang web cho phép bạn chơi một chút với các tham số Gabor và lưu ý kết quả: http://www.cogsci.nl/pages/gabor-generator.php

Sau khi xem nhanh, cả băng thông góc và băng thông góc được liên kết với nhau dưới dạng "Độ lệch chuẩn tính bằng pixel ... cho đường bao Gauss". Phần còn lại của các tham số được xác định dễ dàng. Tuy nhiên, lưu ý rằng có sự khác biệt về số! Ví dụ. pha có thể được biểu thị trong khoảng 0-1 hoặc 0-π khoảng thời gian.


Làm thế nào để kích thước hạt nhân phụ thuộc vào các tham số? Có vẻ như hầu hết các triển khai chỉ sử dụng một kích thước tùy ý.
jiggunjer

Tl; dr: băng thông kiểm soát độ rộng của kernel. Đó là một mối quan hệ tỷ lệ nghịch. Ví dụ. băng thông hẹp hơn -> bộ lọc lớn hơn. Ngoài ra tần số trung tâm cũng có một vai trò.
visoft

Khi tôi đang sử dụng bộ lọc Gabor, trước tiên tôi nghĩ về các tham số của mình (băng thông, tần số trung tâm, v.v.) và sau đó "để" các công thức tính toán kích thước.
visoft

Bạn có thể làm việc theo cách khác, nhập kích thước và tính toán các tham số làm việc của bộ lọc.
visoft

Trên thực tế tôi thấy rằng mối quan hệ kích thước tỷ lệ thuận với lambda (ít nhất là trong triển khai gabor của matlab). Công thức của họ hơi kỳ lạ bởi vì nó có một thuật ngữ (2^BW+1)/(2^BW-1)luôn bằng 4. Họ sử dụng 7 * sigma (trong đó sigma ~ lambda), ví dụ gabor wikipedia sử dụng 3 * sigma.
jiggunjer

6

Nếu chúng ta thấy định nghĩa của bộ lọc Gabor, chúng ta sẽ biết rằng đáp ứng xung của nó là sản phẩm của hàm hình sinhàm Gaussian , về cơ bản là những gì chúng ta thấy trong công thức.

nhập mô tả hình ảnh ở đây

Các tham số,, ψ là các tham số cho phần hình sin (hoặc hệ số).

và là các tham số cơ bản của sóng hình sin.

λ - điều khiển các bước sóng ( https://en.wikipedia.org/wiki/Wavelength ) của hình sin này. Một higher cao hơn sẽ mở rộng ra các hình elip mà bạn nhìn thấy trong hình trên, trong khi thấp hơn sẽ ngược lại.

θ - điều khiển vòng quay của elip mà bạn nhìn thấy trong hình trên. Những hình elip này là những sọc song song của người Viking. Giá trị = 0 biểu thị không có phép quay và sẽ làm cho các hình elip thẳng đứng.

ψ - là độ dịch pha của hình sin tức là, cần phải dịch chuyển bao nhiêu hình elip đối với tâm. Đó là một tham số phải được chỉ định.

σ - là độ lệch chuẩn (ví dụ, sự lây lan) của phần Gaussian.

γ - kiểm soát tỷ lệ khía cạnh của elip (xấp xỉ, làm thế nào kéo dài các elip cần phải).

Các thông số khác nhau được chỉ định ở trên là đầu vào.

Giá trị đầu ra của phép tính chỉ đơn giản là hệ số (hoặc trọng số) của bộ lọc tại vị trí (x, y).

Đây là ý nghĩa và giống nhau trong bối cảnh của bất kỳ bộ lọc tuyến tính nào khác được sử dụng trong xử lý hình ảnh.


0

Ai đó đã tạo một video nổi bật giải thích về ảnh hưởng của các thông số khác nhau của bộ lọc Gabor. Bạn có thể tìm thấy video ở đây .

Hi vọng điêu nay co ich.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.