[FFmpeg-user] Question about "normalize" filter

Michael Koch astroelectronic at t-online.de
Mon Jan 30 00:21:36 EET 2023


Am 29.01.2023 um 23:07 schrieb Paul B Mahol:
> On 1/29/23, Michael Koch <astroelectronic at t-online.de> wrote:
>> Am 29.01.2023 um 22:05 schrieb Paul B Mahol:
>>> On 1/29/23, Michael Koch <astroelectronic at t-online.de> wrote:
>>>> Am 29.01.2023 um 19:32 schrieb Paul B Mahol:
>>>>> On 1/29/23, Michael Koch <astroelectronic at t-online.de> wrote:
>>>>>> Hello,
>>>>>>
>>>>>> if I understood the documentation correctly, the normalize filter maps
>>>>>> the darkest input pixel to blackpt and the brightest input pixel to
>>>>>> whitept:
>>>>>> darkest pixel --> blackpt
>>>>>> brightest pixel --> whitept
>>>>>>
>>>>>> However I need a slightly different mapping:
>>>>>> A black input pixel shall remain black, and the brightest input pixel
>>>>>> shall become white.
>>>>>> black --> blackpt
>>>>>> brightest pixel --> whitept
>>>>>>
>>>>>> With other words: Just multiply all pixels by a suitable constant.
>>>>>> Don't
>>>>>> add or subtract anything.
>>>>>> Is this possible?
>>>>>>
>>>>>> Known workaround: Make sure that the input frame contains a black
>>>>>> pixel,
>>>>>> by inserting one in a corner.
>>>>> Try attached patch.
>>>> How must I set the options for the desired behaviour?
>>> Set first strength to reverse of second strength.
>>> So 1.0 and 0.0 or 0.0 and 1.0
>> I did try with strength=0:strength2=1 but the output isn't as expected.
>>
>> I'm using this input image:
>> http://www.astro-electronic.de/flat.png
>>
>> The pixel values are about 171 in the center and 107 in the top right
>> corner.
>> The center to corner ratio is 171 / 107 = 1.6
>>
>> In the output image I measure 248 in the center (which is almost as
>> expected, probably correct because I'm measuring the average of a 7x7
>> neighborhood), but I measure 122 in the top right corner.
>> The center to corner ratio is 248 / 122 = 2.03
>> The corner is too dark.
>>
> I checked with oscilloscope filter (s=1:tw=1:t=1:x=0), far left pixels
> (as they are darkest) and they are not changing (min values are same
> with and without filter run)
> With default parameters and just strength(2) set to your values, so
> the darkest pixels are left  untouched. Did not checked brightest
> pixels output, but they should be correct too.

But that's not the behaviour I need. All pixels shall be multiplied by 
the same suitable constant, so that the brightest pixel becomes white.

Input center: 171
Input corner: 107

constant c = 255 / 171 =1.49
Output center: 171 * c = 255
Output corner: 107 * c = 160

Michael



More information about the ffmpeg-user mailing list