I have a starting BufferedImage ((a) in figure below). I don't know how to call this filter, but I need to transform all figure (a) pixels gradually from (b) to (c), until they are all gray as (d). How can I achieve this? Thanks!
Image filter with Java BufferedImage: how to change all pixels colors untill they converge to a total gray image
309 Views Asked by AudioBubble At
1
There are 1 best solutions below
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in BUFFEREDIMAGE
- Image processing in Java using BufferedImage
- Possibility of using high-res image "chunks" using esp32 firmware without PSRAM with ov2640 camera
- I am trying to read an JPEG image, which is of 32 bits pixels, but ImageIO.read(new File(path)).getColorModel() akways returns 24 bits
- Cant find image file - java
- What is the fastest way to put bloom on a BufferedImage?
- How to save the original grayscale image data stored in an array as a picture in Java?
- Artifacts when drawing to music. When deleting artifacts, the previous drawn shapes are not saved
- How to programmatically remove background of an image in java?
- Getting the reference for BufferedImage to and int[] problem
- How can I rotate TIFF CMYK image in ImageIO or TwelveMonkeys?
- How do I display an HSB image I converted from RGB using Color.RGBtoHSB?
- Editing the Border of a BufferedImage in Java
- Flip (Mirror) Image Java
- Error serializing/deserializing BufferedImage using Jackson
- bufferedimage null pointer exception
Related Questions in COLORFILTER
- Replace one - and only one - color in a svg drawable
- How to Color Specific Parts of SVG Image using Flutter and flutter_svg?
- GigE camera output is not what is expected. Showing different images in eBus viewer and camera software
- Demosaicing RCCG color filter array to RGB with OpenCV
- ColorFiltered Overflows Image
- An error occurs when compile a Flutter shader
- Filter out color (greyscale) everything behind a view
- How to filter a pivot table by color in Excel
- I tried to add color to half of image (50% size of image) but I couldn't give value in flutter
- How to create an inverted colour (Negative of an image) UIImage using Swift
- How to apply HDR fillter to image in flutter
- How to apply ColorFilter matrix to the direct file or image and save it in flutter?
- Filter pixel based on multiple conditions
- How do I get the effect of BlendMode.srcOver without making the rounded edges of Image to pointed ones?
- Image filter with Java BufferedImage: how to change all pixels colors untill they converge to a total gray image
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?

Looks like it could be achieved with linear interpolation. I'll not get into the specifics of the code but just give you an algorithm to put you on the right track.
Let's assume the colors are represented as RGB float values with a range of [0,1]. So
(0.0,0.0,0.0)means 0% red, 0% blue and 0% green;(0.5,0.4,0.3)means 50% red, 40% blue and 30% green. If your colors are in the range [0,255], it should work the same. I prefer the [0,1] range because it works better for certain shaders. You can always divide by 255 to get them into the [0,1] range and multiply by 255 at the end to get them back into the original range.You have two images: your base image (let's call it
Source) and the fully opaque post-processing effect (in this case pure grey, let's call itTarget).To linearly interpolate between them, you just add both their RGB values weighted by a factor that changes over time from 0 to 1 for the Source and from 1 to 0 for the Target, so the sum of both RGB values never exceed the color range of their respective channels.
With your example:
RGB(Source) * 1.0 + RGB(Target) * 0.0RGB(Source) * 0.667 + RGB(Target) * 0.333RGB(Source) * 0.333 + RGB(Target) * 0.667RGB(Source) * 0.0 + RGB(Target) * 1.0