<p>I'm trying to implement a silhouette detection algorithm in post-processing. I've come across solutions based on Sobel/Roberts cross/... filters and I was wondering if there are more accurate techniques to perform the task.</p>
<p>With silhouette edge I mean those edges that are at the boundary between a front-facing and a back-facing triangle of a polygonal mesh with respect to the view direction.</p>
<p>One thing that is really important for my application is consistent silhouette thickness (so that I could inflate the output in later passes to reach a target width).</p>
<p>I am assuming a Sobel filter based approach on depth values (or similar) alone is not enough to consistently detect silhouettes (since it detects large enough discontinuities...that are oftentimes coincident with what we consider silhouettes).
<strong>Is it true or a simple filter tweaked for this purpose could perform just fine?</strong></p>
<p><strong>Is there any other documented post-processing technique for silhouette detection?</strong></p>
<p>I've been experimenting with the following approach:
<a href="https://i.sstatic.net/3AuD4.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/3AuD4.png" alt="enter image description here" /></a></p>
<p>This approach seems to work quite well, however, <strong>does it makes any sense to you?
Am I re-inventing something that already exists?</strong></p>

CC BY-SA 4.0
2022-10-26T21:29:05.820Z
You can find silhouettes by using deferred rendering when storing item numbers as well... Afterwards you can highlight when neighboring pixels have different item values. Additionally you can use max filter in size 'x' to make line width larger
Thomas
CC BY-SA 4.0
2022-10-26T21:34:15.847Z
Small hint: Storing item numbers can also be used to do color picking to select geometry. This has nothing to do with this question, but could be a reason to use this technique...
Thomas
<opengl><z-buffer><post-processing><direct3d><silhouette>
Silhouette edge detection alternatives to Sobel
leone ruggiero
# Silhouette edge detection alternatives to Sobel

(Asked by: username_0 on 2022-10-26)

I'm trying to implement a silhouette detection algorithm in post-processing. I've come across solutions based on Sobel/Roberts cross/... filters and I was wondering if there are more accurate techniques to perform the task.

With silhouette edge I mean those edges that are at the boundary between a front-facing and a back-facing triangle of a polygonal mesh with respect to the view direction.

One thing that is really important for my application is consistent silhouette thickness (so that I could inflate the output in later passes to reach a target width).

I am assuming a Sobel filter based approach on depth values (or similar) alone is not enough to consistently detect silhouettes (since it detects large enough discontinuities...that are oftentimes coincident with what we consider silhouettes).
**Is it true or a simple filter tweaked for this purpose could perform just fine?**

**Is there any other documented post-processing technique for silhouette detection?**

I've been experimenting with the following approach:
[![enter image description here](https://i.sstatic.net/3AuD4.png)](https://i.sstatic.net/3AuD4.png)

This approach seems to work quite well, however, **does it makes any sense to you?
Am I re-inventing something that already exists?**

**Tags:** opengl, z-buffer, post-processing, direct3d, silhouette

> **Comments:**
> **username_1**: You can find silhouettes by using deferred rendering when storing item numbers as well... Afterwards you can highlight when neighboring pixels have different item values. Additionally you can use max filter in size 'x' to make line width larger  
> **username_1**: Small hint: Storing item numbers can also be used to do color picking to select geometry. This has nothing to do with this question, but could be a reason to use this technique...  

---

## 0 answers

