Image pixels value exceeds 0-255 range, after arithmetic operations on image - How to solve it

P
Patrick Star · Jan 31, 2024 · 1.9K views
Question
I = imread('img.jpg'); I = (double(I).^3)   The problem is, when I do operations like I.^3, pixels go far away from 255 value. I need them to be in range 0 - 255, and be able to multiply image to any value, without exceeding range.   Anyone got idea how could I do it?
Expert Answer
Profile picture of Prashant Kumar
Prashant Kumar PhD Expert
Answered Aug 14, 2026

You could use mat2gray() to map the min to 0 and the max to 1.

 

I = mat2gray(I);

Multiply by 255 if you want in the range 0-255 and cast to uint8 if you want

I = uint8(255 * mat2gray(I));

I would recommend using a more descriptive variable name than I. You don't want it to be mistaken for a 1 or an l, and you don't want your code to look like alphabet soup.

100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!