[PR #1510] [IMPROVEMENT] add erosion then dilation after quantization #2235

Closed
opened 2026-01-29 17:21:03 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/CCExtractor/ccextractor/pull/1510

State: closed
Merged: Yes


In raising this pull request, I confirm the following (please check boxes):

  • I have read and understood the contributors guide.
  • I have checked that another pull request for this purpose does not exist.
  • I have considered, and confirmed that this submission will be valuable to others.
  • I accept that this submission may not be used, and the pull request closed at the will of the maintainer.
  • I give this submission freely, and claim no ownership to its content.
  • I have mentioned this change in the changelog.

My familiarity with the project is as follows (check one):

  • I have never used CCExtractor.
  • I have used CCExtractor just a couple of times.
  • I absolutely love CCExtractor, but have not contributed previously.
  • I am an active contributor to CCExtractor.

This PR is the suggested fix to the infamous OCR noise problem in issue #929
I've checked the discussion there and found that the last step that hasn't been implemented is the erosion-dilation to remove the noise surrounding the text after using the built-in quantize_map function.

I've spent the last two days decrypting the quantize_map function, partly because of how weird the png format stores the color palette and bitmap seperately and partly because the function output doesn't respect it's input parameters. i.e: when passing the max_color=3 to the function, it actually outputs an image with only 2 colors, one of which is transparency.

This is a proof of concept of how erosion and dilation do actually fix the problem and improve the output quality by a lot. I've done some experimenting with the kernel size and found that 2x2 is the most suitable for removing that kind of noise.
Right now, there's a small quirk that needs fixing which is that the erosion sometimes removes the second line of the subtitle altogether.
I'll solve that issue and mark the PR as ready for review.

**Original Pull Request:** https://github.com/CCExtractor/ccextractor/pull/1510 **State:** closed **Merged:** Yes --- <!-- Please prefix your pull request with one of the following: **[FEATURE]** **[FIX]** **[IMPROVEMENT]**. --> **In raising this pull request, I confirm the following (please check boxes):** - [x] I have read and understood the [contributors guide](https://github.com/CCExtractor/ccextractor/blob/master/.github/CONTRIBUTING.md). - [x] I have checked that another pull request for this purpose does not exist. - [x] I have considered, and confirmed that this submission will be valuable to others. - [x] I accept that this submission may not be used, and the pull request closed at the will of the maintainer. - [x] I give this submission freely, and claim no ownership to its content. - [ ] **I have mentioned this change in the [changelog](https://github.com/CCExtractor/ccextractor/blob/master/docs/CHANGES.TXT).** **My familiarity with the project is as follows (check one):** - [ ] I have never used CCExtractor. - [x] I have used CCExtractor just a couple of times. - [ ] I absolutely love CCExtractor, but have not contributed previously. - [ ] I am an active contributor to CCExtractor. --- This PR is the suggested fix to the infamous OCR noise problem in issue #929 I've checked the discussion there and found that the last step that hasn't been implemented is the erosion-dilation to remove the noise surrounding the text after using the built-in `quantize_map` function. I've spent the last two days decrypting the `quantize_map` function, partly because of how weird the png format stores the color palette and bitmap seperately and partly because the function output doesn't respect it's input parameters. i.e: when passing the `max_color=3` to the function, it actually outputs an image with only 2 colors, one of which is _transparency_. This is a proof of concept of how erosion and dilation do actually fix the problem and improve the output quality by **a lot**. I've done some experimenting with the kernel size and found that 2x2 is the most suitable for removing that kind of noise. Right now, there's a small quirk that needs fixing which is that the erosion sometimes removes the second line of the subtitle altogether. I'll solve that issue and mark the PR as ready for review.
claunia added the pull-request label 2026-01-29 17:21:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ccextractor#2235