Click here to Skip to main content
14,924,006 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
I'm working on a c programming question and need support to help me learn.

perform the following operation on a given image.

Determine the average value of the image. Use double data type to sum every pixel and divide by the number of pixels in the image. This value will be referred as A. Then calculate the average value of pixels that are greater than A, this value will be referred as H. You need to sum and count. Likewise calculate the average of the values that are less than A: L. Then apply the following formula to each pixel. Do not forget to round and clamp.

O=(I−L)*((255−C)/(H−L))+C

C is the parameter of the system, try values between 1 and 127. What do you think this algorithm does?

What I have tried:

I need help to understand what the Algorithm do?!!
Posted
Updated 15-Apr-21 8:27am
Comments
CPallini 15-Apr-21 8:14am
   
You could try it.
Do you forgot to mention that Max(I)=255 ?

We are more than willing to help those that are stuck: but that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.

So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.

Your teacher is looking for your work, your thoughts, to assess your skills - not mine.

If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^]
   
It might help your understanding if you rewrite the formula with meaningful variable names :
Original:

O=(I−L)*((255−C)/(H−L))+C

Revised:

C = Parameter
H = AverageHigher
I = Input
L = AverageLower
O = Output

Constant = ( 255 - Parameter ) / ( AverageHigher - AverageLower )
Output = ( Input - AverageLower ) * Constant + Parameter
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900