{
  "id": 679391,
  "title": "Cohesion enhancing shock filtering",
  "url": "/competitions/vesuvius-challenge-surface-detection/discussion/679391",
  "author_name": "Vineet K Reddy",
  "post_date": "2026-03-01T02:30:52.581000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<p>Thanks to team Vesuvius and kaggle for an interesting competition. Quite curious to know what's actually written in those scrolls 😀. </p>\n<p><a href=\"https://www.mia.uni-saarland.de/Publications/weickert-dagm03.pdf\" target=\"_blank\">Cohesion enhancing shock filtering</a> could be a worthwhile part of the surface detection pipeline. It solves problems where flow like patterns are a strong prior, like fingerprint line detection 🫆. If I am not wrong, I see from the villa repo that the host team tried a related method called cohesion enhancing diffusion (CED) for ink detection.</p>\n<p>There is a working open cv snippet of CESF in 2D <a href=\"https://github.com/opencv/opencv/blob/3.2.0/samples/python/coherence.py\" target=\"_blank\">here</a>.</p>\n<p>However, CESF occasionally merges lines (which is allowed in fingerprints but not in scrolls) or spuriously branches out. This could hopefully be solved by selectively pruning bridges formed, every iteration.</p>\n<p>I came across CESF during the last week and couldn't manage to implement it in time.</p>\n<p>Below is an example of CESF applied to a 2D slice of nnUNet probabilities. The filter seems to do well at resolving ambiguity at the green arrows, but it does create a few problems like the one at red arrow.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F21007039%2F5f38e9793d8b237e92aa518f0beca7fe%2FScreenshot%20From%202026-03-01%2008-51-26.png?generation=1772335303268646&amp;alt=media\" alt=\"\"></p>",
  "messages": [
    {
      "id": 3415571,
      "postDate": "2026-03-01T02:30:52.580Z",
      "content": "<p>Thanks to team Vesuvius and kaggle for an interesting competition. Quite curious to know what's actually written in those scrolls 😀. </p>\n<p><a href=\"https://www.mia.uni-saarland.de/Publications/weickert-dagm03.pdf\" target=\"_blank\">Cohesion enhancing shock filtering</a> could be a worthwhile part of the surface detection pipeline. It solves problems where flow like patterns are a strong prior, like fingerprint line detection 🫆. If I am not wrong, I see from the villa repo that the host team tried a related method called cohesion enhancing diffusion (CED) for ink detection.</p>\n<p>There is a working open cv snippet of CESF in 2D <a href=\"https://github.com/opencv/opencv/blob/3.2.0/samples/python/coherence.py\" target=\"_blank\">here</a>.</p>\n<p>However, CESF occasionally merges lines (which is allowed in fingerprints but not in scrolls) or spuriously branches out. This could hopefully be solved by selectively pruning bridges formed, every iteration.</p>\n<p>I came across CESF during the last week and couldn't manage to implement it in time.</p>\n<p>Below is an example of CESF applied to a 2D slice of nnUNet probabilities. The filter seems to do well at resolving ambiguity at the green arrows, but it does create a few problems like the one at red arrow.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F21007039%2F5f38e9793d8b237e92aa518f0beca7fe%2FScreenshot%20From%202026-03-01%2008-51-26.png?generation=1772335303268646&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Thanks to team Vesuvius and kaggle for an interesting competition. Quite curious to know what's actually written in those scrolls 😀. \n\n[Cohesion enhancing shock filtering](https://www.mia.uni-saarland.de/Publications/weickert-dagm03.pdf) could be a worthwhile part of the surface detection pipeline. It solves problems where flow like patterns are a strong prior, like fingerprint line detection 🫆. If I am not wrong, I see from the villa repo that the host team tried a related method called cohesion enhancing diffusion (CED) for ink detection.\n\nThere is a working open cv snippet of CESF in 2D [here](https://github.com/opencv/opencv/blob/3.2.0/samples/python/coherence.py).\n\nHowever, CESF occasionally merges lines (which is allowed in fingerprints but not in scrolls) or spuriously branches out. This could hopefully be solved by selectively pruning bridges formed, every iteration.\n\nI came across CESF during the last week and couldn't manage to implement it in time.\n\nBelow is an example of CESF applied to a 2D slice of nnUNet probabilities. The filter seems to do well at resolving ambiguity at the green arrows, but it does create a few problems like the one at red arrow.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F21007039%2F5f38e9793d8b237e92aa518f0beca7fe%2FScreenshot%20From%202026-03-01%2008-51-26.png?generation=1772335303268646&alt=media)"
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "3415571": "Thanks to team Vesuvius and kaggle for an interesting competition. Quite curious to know what's actually written in those scrolls 😀. \n\n[Cohesion enhancing shock filtering](https://www.mia.uni-saarland.de/Publications/weickert-dagm03.pdf) could be a worthwhile part of the surface detection pipeline. It solves problems where flow like patterns are a strong prior, like fingerprint line detection 🫆. If I am not wrong, I see from the villa repo that the host team tried a related method called cohesion enhancing diffusion (CED) for ink detection.\n\nThere is a working open cv snippet of CESF in 2D [here](https://github.com/opencv/opencv/blob/3.2.0/samples/python/coherence.py).\n\nHowever, CESF occasionally merges lines (which is allowed in fingerprints but not in scrolls) or spuriously branches out. This could hopefully be solved by selectively pruning bridges formed, every iteration.\n\nI came across CESF during the last week and couldn't manage to implement it in time.\n\nBelow is an example of CESF applied to a 2D slice of nnUNet probabilities. The filter seems to do well at resolving ambiguity at the green arrows, but it does create a few problems like the one at red arrow.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F21007039%2F5f38e9793d8b237e92aa518f0beca7fe%2FScreenshot%20From%202026-03-01%2008-51-26.png?generation=1772335303268646&alt=media)"
  }
}