Gaussian làm mờ một hàm được định nghĩa trên lưới bề mặt


8

Tôi có một hàm vô hướng được xác định trên các đỉnh của lưới bề mặt. Tôi muốn tính toán một cách gần đúng (và tổng quát hóa, tôi cho rằng) "Làm mờ / tích chập Gaussian" của hàm này trên bề mặt.

Tôi có thể tưởng tượng cho mỗi đỉnh, lấy trung bình của hàm tại các đỉnh trong vùng lân cận (đa hop) có trọng số theo Gaussian của khoảng cách Euclide của chúng (trong R3) từ đỉnh hiện tại nhân với diện tích cục bộ mà chúng đại diện. Phép tính gần đúng này sẽ tốt nếu bề mặt không quá cong theo tỷ lệ của hạt nhân Gaussian. Tuy nhiên, nó vẫn sẽ bị cấm tính toán.

Có một thuật toán tích hợp hiệu quả hơn, có lẽ dựa trên một số loại "dòng chảy" lặp lại hoặc trao đổi một phần qua các cạnh của lưới?

Lưới có thể có các mặt hình tam giác hoặc hình tứ giác - bất kỳ thuận tiện hơn trong việc trả lời câu hỏi này. Nhưng độ dài cạnh không phải là hằng số, vì vậy hình học lân cận cục bộ khác nhau giữa các đỉnh.


Bạn có yêu cầu một vùng lân cận vượt ra ngoài hàng xóm ngay lập tức hoặc bạn sẽ quan tâm đến các xấp xỉ dựa trên việc áp dụng lặp lại phương pháp tiếp cận gần nhất?
trichoplax

@trichoplax Miễn là số lần lặp được yêu cầu để đạt độ lệch chuẩn 10 hop sẽ không bị cấm. (Tôi đoán là không, vì ít nhất trong trường hợp 1D có thể đạt được độ lệch 10 hop bằng cách trộn hàng xóm gần nhất 100 lần.) Tôi chỉ không biết cách cân trọng lượng của hàng xóm trong trường hợp này.
Hồi giáo

@joojaa Nó có thể tách rời khi được áp dụng trên một bề mặt / lưới phẳng nhưng nó vẫn có thể tách rời khi bạn có các cạnh đi ra theo các hướng tùy ý từ mỗi đỉnh?
Hồi giáo

@Musiously Ok ở đâu lặp đi lặp lại làm mờ nhỏ hơn lớn hơn theo cách bạn chỉ có thể làm điều đó qua các kết nối cạnh và để các lần lặp phát huy hiệu ứng. Điều này được sử dụng trong FEM và sim lỏng cho hiệu quả cao
joojaa

1
Tôi không chắc chắn, tôi không đầu tư quá sâu vào truyền thuyết của FEM. Tất cả tôi biết rằng họ có thể giải quyết sự khuếch tán trên các mắt lưới không đều và điều đó hoàn toàn tương tự với mờ gaussian.
joojaa

Câu trả lời:


6

Một vài cách tiếp cận khác nhau

Tôi sẽ xem xét một vài biến thể trong yêu cầu cụ thể của bạn, vì bạn đề cập đến hiệu quả và tôi nghi ngờ yêu cầu cụ thể của bạn có thể kém hiệu quả nhất. Tôi cũng sẽ đề xuất các cách cải thiện hiệu quả mà không thay đổi so với phương pháp dự định của bạn, để bạn có thể cân nhắc các phương án.

Làm mờ âm lượng thay vì bề mặt

Nếu bạn muốn số liệu khoảng cách là khoảng cách Euclide 3D thay vì khoảng cách 2D Euclide trong bề mặt, thì bạn có thể thực hiện làm mờ trên lưới 3D thông thường mà hàm vô hướng bạn đã áp dụng. Sau đó, bạn có thể sử dụng kết quả cuối cùng của Sự khác biệt của Gaussian để tính các giá trị vô hướng ở các đỉnh của lưới không đều của bạn. Điều này tránh phải tính đến hình dạng lưới cho phần lớn phép tính.

Lưới 3D có thể có số lượng đỉnh lớn hơn nhiều so với lưới 2D, nhưng tất cả chúng sẽ có khoảng cách đều nhau và độ mờ hạt nhân lớn có thể đạt được bằng cách áp dụng lặp lại độ mờ hạt nhân nhỏ chỉ tính đến 6 lân cận gần nhất, mà sẽ luôn ở một khoảng cách không đổi. Cách tiếp cận này liên quan đến khả năng tính toán nhiều hơn, nhưng việc dễ dàng tăng tốc lưới thông thường có thể thu hút GPU.

Điều này sẽ cho kết quả khác với việc thực hiện làm mờ trên các đỉnh của lưới bằng khoảng cách 3D Euclide. Ví dụ: cách tiếp cận lưới 3D sẽ bị ảnh hưởng bởi các vùng đặc biệt của hàm vô hướng 3D ở gần nhưng không nằm trên lưới. Điều này có thể được mong muốn hoặc không tùy thuộc vào mục đích cụ thể của bạn.

Sử dụng khoảng cách 2D thay vì khoảng cách 3D

Nếu bạn thấy rằng bạn cần số liệu khoảng cách là 2D Euclide trong bề mặt, thì bạn có thể có được xấp xỉ tốt với độ mờ Gaussian hạt nhân lớn hơn bằng cách áp dụng độ mờ Gaussian hạt nhân nhỏ hơn. Nếu không có quá nhiều sự thay đổi về độ dài cạnh trong lưới của bạn, bạn có thể chọn kích thước hạt nhân chỉ cho phép bao gồm các đỉnh một cạnh ở mỗi lần lặp. Điều này cho phép chỉ sử dụng độ dài cạnh đơn để tính kích thước đóng góp của một đỉnh, thay vì tính khoảng cách đa cạnh 2D.

Khoảng cách 3D sử dụng bề mặt không có âm lượng

Nếu bạn cần tính toán chính xác như được mô tả trong câu hỏi của bạn, được tính trong lưới thay vì trong khối lượng xung quanh, nhưng cũng sử dụng khoảng cách Euclide 3D, thì sử dụng hàng xóm gần nhất và một số lần lặp sẽ không hoạt động. Trừ khi lưới gần phẳng, ứng dụng lặp lại của độ mờ lân cận gần nhất sẽ dẫn đến xấp xỉ với trường hợp khoảng cách 2D Euclide, vì các giá trị sẽ chỉ có thể chảy từ đỉnh này sang đỉnh khác, không trực tiếp dọc theo con đường ngắn nhất vì chúng sẽ trong một lần duy nhất. Điều này sẽ cho mức độ lây lan ít hơn mức có thể đạt được bằng một lần vượt qua tính toán khoảng cách 3D đến đỉnh 10 cạnh. (Tôi đã sử dụng 10 cạnh kể từ khi bạn đề cập đến 10 hop trong nhận xét của bạn về câu hỏi.)

Việc thực hiện độ mờ trong một lần chạy sẽ có nghĩa là tính toán khoảng cách Euclide 3D giữa mọi đỉnh và mọi đỉnh khác trong bán kính 10 cạnh. Điều này sẽ tốn kém, nhưng hoàn toàn có thể. Vì bạn đề cập đến hiệu quả, hãy xem xét rằng có một số dự phòng bạn có thể loại bỏ miễn là bạn có đủ bộ nhớ khả dụng.

Hai độ mờ mà bạn tạo ra trước khi lấy Sự khác biệt của Gaussian sẽ sử dụng cùng một khoảng cách 3D cho đến bán kính cạnh của độ mờ hạt nhân nhỏ hơn. Nếu bạn có thể lưu chúng thì bạn chỉ cần tính toán chúng một lần, thay vì một lần cho mỗi lần mờ.

Ngoài ra, mỗi khoảng cách sẽ được sử dụng hai lần mỗi lần làm mờ - một lần theo mỗi hướng vì độ dài từ đỉnh A đến đỉnh B giống như độ dài từ B đến A. Lưu vào bộ nhớ / ghi nhớ những khoảng cách này sẽ tránh tính toán chúng hai lần.

Hiệu ứng từ nhiều góc cạnh tùy ý

Nếu các đường cong bề mặt sao cho một số đỉnh cách xa nhiều cạnh vẫn đủ gần để ảnh hưởng đến nhau trong khoảng cách 3D, thì thay vì xem xét các đỉnh trong một số cạnh nhất định, bạn có thể cần xem xét tất cả các đỉnh trong bán kính 3D nhất định , bất kể bao lâu con đường qua các cạnh. Trong trường hợp này, bạn có thể xem xét ít đỉnh hơn bằng cách sử dụng phân vùng không gian, chọn một phương pháp cụ thể phù hợp với lưới.

Nếu bạn không muốn các phần của bề mặt tiếp cận nhau ảnh hưởng lẫn nhau, thì có lẽ bạn muốn có một thước đo khoảng cách 2D thay vì 3D.

Nếu bạn có một phạm vi rộng có độ dài cạnh khác nhau thì bạn có thể thấy cùng một vấn đề là không thể xác định số lượng cạnh được đặt để di chuyển ngang, ngay cả khi lưới khá phẳng. Một lần nữa, bạn có thể cần xác định khoảng cách 3D thay vì một số cạnh và xem xét tất cả các đỉnh nằm trong bán kính đó.


Cảm ơn bạn. Tôi đề cập đến khoảng cách 3D Euclide có thể đã gây hại nhiều hơn là tốt. Tôi chỉ có nghĩa là nó là một xấp xỉ đắt tiền (và có điều kiện) rất đơn giản để giải thích. Tôi sẽ không theo đuổi sự gần đúng nếu nó ít đạt được hơn câu trả lời lý tưởng.
Hồi giáo

Điều tôi lý tưởng nhất là những gì bạn gọi là "sử dụng khoảng cách 2D". Trên một lưới thông thường (với hình học cục bộ nhất quán) thật dễ dàng vì hạt nhân 1-hop-lân cận đối xứng có thể được áp dụng (lặp đi lặp lại) trong toàn bộ lưới. Vấn đề thực sự của tôi là xác định trọng số hạt nhân của các lân cận 1 hop xung quanh mỗi đỉnh từ hình dạng cục bộ của vùng lân cận 1 hop đó.
Hồi giáo

Mỗi đỉnh có hóa trị 4 nhưng chiều dài và hướng khác nhau. (Ngoài ra (nếu vì một lý do nào đó, các mặt phẳng làm cho vấn đề trở nên dễ xử lý), mỗi mặt tứ giác có thể bị phá vỡ theo đường chéo ngắn nhất của nó thành hai tam giác (bây giờ là mặt phẳng), trong đó trường hợp hóa trị đỉnh thay đổi từ 4 đến 8, và độ dài cạnh thậm chí còn thay đổi hơn nữa .)
Hồi giáo

Cuối cùng, tôi có một đỉnh với một vòng lân cận ở các khoảng cách và góc khác nhau, và tôi cần biết trọng số hạt nhân cục bộ so với các lân cận này. Việc hạn chế giá trị trung bình / trung tâm của hạt nhân nằm ở "trung tâm" (trong trường hợp này có lẽ có nghĩa là dọc theo độ cong bình thường của độ cong trung bình từ đỉnh) đã hạn chế 2DoF về trọng lượng của hạt nhân. Chọn một số phương sai cung cấp một ràng buộc khác. Nhưng hệ thống vẫn chưa được xác định rõ ràng vì hóa trị> 3. Làm thế nào để chọn trọng lượng?
Hồi giáo

Có, "sử dụng khoảng cách 2D" là một chút mơ hồ. Tôi đoán chúng ta nên phân biệt giữa "khoảng cách edgewise ngắn nhất" và "khoảng cách ngắn nhất trong bề mặt" (không nhất thiết phải ở trên các cạnh). May mắn thay, sự khác biệt trở nên ít liên quan hơn khi bạn áp dụng độ mờ nhiều hơn (thậm chí bộ lọc hộp sẽ xấp xỉ độ mờ Gaussian nếu được áp dụng nhiều lần). Nếu bạn có thể xác định xem bạn cần độ mờ Gaussian với tham số chính xác hay chỉ là độ mờ Gaussian với tham số có thể điều chỉnh, thì bạn sẽ có thể quyết định liệu bộ lọc kiểu hộp lặp lại có đủ hay không.
trichoplax
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.