Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

How to find max of two images

paul-stephan
ビギナー
861件の閲覧回数
We would like to be able to generate an image buffer whose pixel values are the maximum of two other buffers (or perhaps the current and one other buffer).
In other words, for every pixel, i, m[ i ] = max( a[ i ], b[ i ] ) or m[ i ] = max ( m[ i ], a[ i ] ).
Any suggestions for how to do this? I didn't see a function to do exactly this. Perhaps we need to make several calls, but wanted to see if others had some suggestions.
Thank you
0 件の賞賛
5 返答(返信)
andrewk88
ビギナー
861件の閲覧回数
Hi Paul,
Please see my "feature request" at
Areyou ready to submit another "feature request" on premier site to see it done?
Thanks,
Andrew
Vladimir_Dudnik
従業員
861件の閲覧回数
Hi, it seems in case of Ipp8u data type we can do it in two simple operations:

Input: A, B
Output: C

C = A B;
C = C + B;

Due to saturation used in ippi functions there will be correct result
C = MAX(A,B);

Or if go more deeply simple for loop with only several intrinsics inside:

movdqa regA, A
movqda regB, B
pmaxub regA, regB
movdqa C, regA

Regards,
Vladimir
paul-stephan
ビギナー
861件の閲覧回数
Can you explain (or point to somewhere this is explained) how saturation works? I'm trying to understand how C = A-B, C= C+B will work. For example, for pixel i, if A[ i ] = 5 and B[ i ] = 10, then C[ i ] will equal what? -5?, 0? Does saturation work by truncating negative values to 0 and values larger than 255 (assuming 8-bits) to 255?
Vladimir_Dudnik
従業員
861件の閲覧回数

Yes, for your example:

A = 5
B = 10
C = A B = 5 10 = -5 = > (saturate to 8u means range 0 <= X <= 255 => 0;
C = C + B = 10;
It is true for all functions with _Sfs suffix and unsigned data type.

Regards,
Vladimir

mdumskyj
ビギナー
861件の閲覧回数
Will this work the same with

ippiSub_

32sc_C1RSfs

and

ippiAdd_32sc_C1RSfs ?

Thanks

Martin

返信