void AbsGradientSaturatedSum(const uint8_t * src, size_t srcStride, size_t width, size_t height, uint8_t * dst, size_t dstStride)
		{
			memset(dst, 0, width);
			src += srcStride;
			dst += dstStride;
			for (size_t row = 2; row < height; ++row)
			{
				dst[0] = 0;
				for (size_t col = 1; col < width - 1; ++col)
				{
					const int dy = AbsDifferenceU8(src[col - srcStride], src[col + srcStride]);
					const int dx = AbsDifferenceU8(src[col - 1], src[col + 1]);
					dst[col] = MinU8(dx + dy, 0xFF);
				}
				dst[width - 1] = 0;

				src += srcStride;
				dst += dstStride;
			}
			memset(dst, 0, width);
		}
Пример #2
0
 template <> SIMD_INLINE uint8_t OperationBinary8u<SimdOperationBinary8uSaturatedAddition>(const uint8_t & a, const uint8_t & b)
 {
     return MinU8((int)a + (int)b, 255);
 }
Пример #3
0
template <> SIMD_INLINE uint8_t OperationBinary8u<SimdOperationBinary8uMinimum>(const uint8_t & a, const uint8_t & b)
{
    return MinU8(a, b);
}