BoofCV
libjpeg-turbo
BoofCV | libjpeg-turbo | |
---|---|---|
20 | 15 | |
1,040 | 3,594 | |
- | 1.1% | |
8.5 | 8.2 | |
10 days ago | 23 days ago | |
Java | C | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
BoofCV
-
Recommended camera/projector calibration software?
BoofCV https://github.com/lessthanoptimal/BoofCV
-
JDK 21 - Image Performance Improvements
Is there any fast way to get pixel values and pixel coordinate? I had to jump through a lot of hoops to get convert BufferedImages into a format that's useful for image processing it to be a reasonable speed in BoofCV. getRGB() is glacial. At one point I was trying to convince the JDK team to make private data structures public again. Right now it's inconsistent what you have access too.
-
Mobile device based surface defect detection for manufacturing quality control
Apologizes if this post runs afoul of the rules. This is a product we are making that started as an open source project (here).
- BoofCV 0.40 Released. Micro QR Code, Transposed QR Codes, Speed improvements, Strict null enforcement
-
The Ancient Secrets of Computer Vision
I will take the opportunity to call out one of my favourite libraries, BoofCV (http://boofcv.org)
It comes with a wonderful demonstration tool that allows you to apply the various included algorithms to images and tweak the parameters in real-time – including the Hough transform. A great tool for helping to understand how these kinds of algorithms work!
-
Good Open Source Repositories that Accepts New Contributors
Speaking of using the vector api, I see there's a class in boofcv that converts rgb to hsv. I've previously written a simd accelerated version of rgb to hsv using the java vector api. For anybody looking to do a bit of code janitor work, converting the one-off library into something that could be contributed to /u/lessthanoptimal's project might be a worthwhile contribution.
-
JavaFX .jar (from clojure) won't find "glass" when run via `java -jar`
For instance I looked at BoofCV and all I found was : https://github.com/lessthanoptimal/BoofCV/issues/265 " the question now seems to be can you compile the library as native. The answer is probably but someone needs to try it."
-
BoofCV v0.38 Release Summary
It's an all-Java computer vision library, see https://boofcv.org/ and https://github.com/lessthanoptimal/BoofCV
-
BoofCV v0.38: Much improved scene reconstruction, loop closure, more concurrency. Also updated PyBoof
project website: https://boofcv.org
-
Feedback Requested on Updated BoofCV QR Code Tutorial
There really is a community for everything on Reddit... Anyways, so I've updated the tutorial on QR Codes in BoofCV. If you're not familiar with it, BoofCV is a computer vision library that also includes a high quality QR Code scanner. Plenty of benchmarks and examples can be found on the website to back that up. Here's a link to the tutorial page and please let me know if it all makes sense. The tutorial focuses on applications which are either command line or have a GUI.
libjpeg-turbo
-
Jpegli: A New JPEG Coding Library
> all decoders will render the same pixels
Not true. Even just within libjpeg, there are three different IDCT implementations (jidctflt.c, jidctfst.c, jidctint.c) and they produce different pixels (it's a classic speed vs quality trade-off). It's spec-compliant to choose any of those.
A few years ago, in libjpeg-turbo, they changed the smoothing kernel used for decoding (incomplete) progressive JPEGs, from a 3x3 window to 5x5. This meant the decoder produced different pixels, but again, that's still valid:
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/6d91e9...
-
My personal C coding style as of late 2023
Last vestiges of this fact AFAIK were libjpeg, which had a macro NEED_SHORT_EXTERNAL_NAMES that shortens all public identifiers to have unique 6-letter-long prefixes. Libjpeg-turbo nowadays has removed them though [1].
[1] https://github.com/libjpeg-turbo/libjpeg-turbo/commit/52ded8...
- Libjpeg-Turbo 3.0.0
-
Why there may never be a libjpeg-turbo 3.1
While I think the move to safer code through Rust and other alternatives is a nice breath of fresh air, I doubt you can get these kinds of optimization without using unsafe code in Rust. These optimized implementations often require some kind of safety-bypassing memory modifications to work as efficiently ad they do.
There's a reason https://github.com/libjpeg-turbo/libjpeg-turbo/tree/main/sim... is filled with assembly files with conditional loading.
-
Learn x86-64 assembly by writing a GUI from scratch
Sure. You'll see it very often in codec implementations. From rav1e, a fast AV1 encoder mostly written in Rust: https://github.com/xiph/rav1e/tree/master/src/x86
Large portions of the algorithm have been translated into assembly for ARM and x86. Shaving even a couple percent off something like motion compensation search will add up to meaningful gains.
Or the current reference implementation of JPEG: https://github.com/libjpeg-turbo/libjpeg-turbo/tree/main/sim...
-
Announcing zune-jpeg: Rust's fastest JPEG decoder
zune-jpeg is 1.5x to 2x faster than jpeg-decoder and is on par with libjpeg-turbo.
-
JDK 21 - Image Performance Improvements
This is interesting from the standpoint of how new JVM features can be used to improve performance (what I presume the article's main purpose to have been), but the image processing improvement itself isn't head-turning. Also, we've found that libjpeg-turbo (https://libjpeg-turbo.org/) is ~5x (IIRC, can re-run my JMH benchmark if anyone wants me to) as fast for decoding JPEGs as ImageIO, so we wouldn't even benefit from this change in 21 much.
-
Convenient CPU feature detection and dispatch in the Magnum Engine
libjpeg-turbo: https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/simd/x86_64/jsimdcpu.asm
-
Implementing SVE2 for Open Source Project
libjpeg-turbo
-
How to go about implementing file encoding [Question]
For all but the simplest formats (basically BMP), the difficulty of implementing encoding/decoding from scratch is significant - well beyond a beginner's ability, and challenging/time-consuming even for senior developers. So, libraries are used in practice - e.g. libpng and libjpeg-turbo.
What are some alternatives?
OpenCV - Open Source Computer Vision Library
ImageMagick - 🧙♂️ ImageMagick 7
EasyOCR - Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.
libwebp - Mirror only. Please do not send pull requests. See https://chromium.googlesource.com/webm/libwebp/+/HEAD/CONTRIBUTING.md.
fSpy - A cross platform app for quick and easy still image camera matching
orion - Usable, easy and safe pure-Rust crypto
Tesseract.js - Pure Javascript OCR for more than 100 Languages 📖🎉🖥
bloom - The simplest way to de-Google your life and business: Inbox, Calendar, Files, Contacts & much more
OCRmyPDF - OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched
virtualgl - Main VirtualGL repository
Codename One - Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.
Rustup - The Rust toolchain installer