mirror of http://192.168.1.51:8099/lmh188/twain3.0
5863 lines
199 KiB
C
5863 lines
199 KiB
C
/*====================================================================*
|
|
- Copyright (C) 2001 Leptonica. All rights reserved.
|
|
-
|
|
- Redistribution and use in source and binary forms, with or without
|
|
- modification, are permitted provided that the following conditions
|
|
- are met:
|
|
- 1. Redistributions of source code must retain the above copyright
|
|
- notice, this list of conditions and the following disclaimer.
|
|
- 2. Redistributions in binary form must reproduce the above
|
|
- copyright notice, this list of conditions and the following
|
|
- disclaimer in the documentation and/or other materials
|
|
- provided with the distribution.
|
|
-
|
|
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
|
|
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*====================================================================*/
|
|
|
|
/*!
|
|
* Low-level fast binary morphology with auto-generated sels
|
|
*
|
|
* Dispatcher:
|
|
* l_int32 fmorphopgen_low_1()
|
|
*
|
|
* Static Low-level:
|
|
* void fdilate_1_*()
|
|
* void ferode_1_*()
|
|
*/
|
|
|
|
#include "allheaders.h"
|
|
|
|
static void fdilate_1_0(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_0(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_1(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_1(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_2(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_2(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_3(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_3(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_4(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_4(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_5(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_5(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_6(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_6(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_7(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_7(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_8(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_8(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_9(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_9(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_10(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_10(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_11(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_11(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_12(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_12(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_13(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_13(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_14(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_14(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_15(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_15(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_16(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_16(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_17(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_17(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_18(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_18(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_19(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_19(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_20(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_20(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_21(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_21(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_22(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_22(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_23(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_23(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_24(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_24(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_25(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_25(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_26(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_26(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_27(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_27(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_28(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_28(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_29(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_29(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_30(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_30(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_31(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_31(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_32(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_32(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_33(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_33(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_34(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_34(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_35(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_35(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_36(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_36(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_37(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_37(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_38(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_38(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_39(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_39(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_40(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_40(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_41(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_41(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_42(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_42(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_43(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_43(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_44(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_44(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_45(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_45(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_46(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_46(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_47(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_47(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_48(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_48(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_49(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_49(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_50(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_50(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_51(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_51(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_52(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_52(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_53(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_53(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_54(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_54(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_55(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_55(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_56(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_56(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void fdilate_1_57(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
static void ferode_1_57(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
|
|
|
|
|
|
/*---------------------------------------------------------------------*
|
|
* Fast morph dispatcher *
|
|
*---------------------------------------------------------------------*/
|
|
/*!
|
|
* fmorphopgen_low_1()
|
|
*
|
|
* a dispatcher to appropriate low-level code
|
|
*/
|
|
l_int32
|
|
fmorphopgen_low_1(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls,
|
|
l_int32 index)
|
|
{
|
|
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
fdilate_1_0(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 1:
|
|
ferode_1_0(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 2:
|
|
fdilate_1_1(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 3:
|
|
ferode_1_1(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 4:
|
|
fdilate_1_2(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 5:
|
|
ferode_1_2(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 6:
|
|
fdilate_1_3(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 7:
|
|
ferode_1_3(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 8:
|
|
fdilate_1_4(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 9:
|
|
ferode_1_4(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 10:
|
|
fdilate_1_5(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 11:
|
|
ferode_1_5(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 12:
|
|
fdilate_1_6(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 13:
|
|
ferode_1_6(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 14:
|
|
fdilate_1_7(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 15:
|
|
ferode_1_7(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 16:
|
|
fdilate_1_8(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 17:
|
|
ferode_1_8(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 18:
|
|
fdilate_1_9(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 19:
|
|
ferode_1_9(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 20:
|
|
fdilate_1_10(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 21:
|
|
ferode_1_10(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 22:
|
|
fdilate_1_11(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 23:
|
|
ferode_1_11(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 24:
|
|
fdilate_1_12(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 25:
|
|
ferode_1_12(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 26:
|
|
fdilate_1_13(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 27:
|
|
ferode_1_13(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 28:
|
|
fdilate_1_14(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 29:
|
|
ferode_1_14(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 30:
|
|
fdilate_1_15(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 31:
|
|
ferode_1_15(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 32:
|
|
fdilate_1_16(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 33:
|
|
ferode_1_16(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 34:
|
|
fdilate_1_17(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 35:
|
|
ferode_1_17(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 36:
|
|
fdilate_1_18(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 37:
|
|
ferode_1_18(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 38:
|
|
fdilate_1_19(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 39:
|
|
ferode_1_19(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 40:
|
|
fdilate_1_20(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 41:
|
|
ferode_1_20(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 42:
|
|
fdilate_1_21(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 43:
|
|
ferode_1_21(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 44:
|
|
fdilate_1_22(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 45:
|
|
ferode_1_22(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 46:
|
|
fdilate_1_23(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 47:
|
|
ferode_1_23(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 48:
|
|
fdilate_1_24(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 49:
|
|
ferode_1_24(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 50:
|
|
fdilate_1_25(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 51:
|
|
ferode_1_25(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 52:
|
|
fdilate_1_26(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 53:
|
|
ferode_1_26(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 54:
|
|
fdilate_1_27(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 55:
|
|
ferode_1_27(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 56:
|
|
fdilate_1_28(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 57:
|
|
ferode_1_28(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 58:
|
|
fdilate_1_29(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 59:
|
|
ferode_1_29(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 60:
|
|
fdilate_1_30(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 61:
|
|
ferode_1_30(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 62:
|
|
fdilate_1_31(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 63:
|
|
ferode_1_31(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 64:
|
|
fdilate_1_32(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 65:
|
|
ferode_1_32(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 66:
|
|
fdilate_1_33(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 67:
|
|
ferode_1_33(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 68:
|
|
fdilate_1_34(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 69:
|
|
ferode_1_34(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 70:
|
|
fdilate_1_35(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 71:
|
|
ferode_1_35(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 72:
|
|
fdilate_1_36(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 73:
|
|
ferode_1_36(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 74:
|
|
fdilate_1_37(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 75:
|
|
ferode_1_37(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 76:
|
|
fdilate_1_38(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 77:
|
|
ferode_1_38(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 78:
|
|
fdilate_1_39(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 79:
|
|
ferode_1_39(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 80:
|
|
fdilate_1_40(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 81:
|
|
ferode_1_40(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 82:
|
|
fdilate_1_41(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 83:
|
|
ferode_1_41(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 84:
|
|
fdilate_1_42(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 85:
|
|
ferode_1_42(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 86:
|
|
fdilate_1_43(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 87:
|
|
ferode_1_43(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 88:
|
|
fdilate_1_44(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 89:
|
|
ferode_1_44(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 90:
|
|
fdilate_1_45(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 91:
|
|
ferode_1_45(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 92:
|
|
fdilate_1_46(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 93:
|
|
ferode_1_46(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 94:
|
|
fdilate_1_47(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 95:
|
|
ferode_1_47(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 96:
|
|
fdilate_1_48(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 97:
|
|
ferode_1_48(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 98:
|
|
fdilate_1_49(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 99:
|
|
ferode_1_49(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 100:
|
|
fdilate_1_50(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 101:
|
|
ferode_1_50(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 102:
|
|
fdilate_1_51(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 103:
|
|
ferode_1_51(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 104:
|
|
fdilate_1_52(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 105:
|
|
ferode_1_52(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 106:
|
|
fdilate_1_53(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 107:
|
|
ferode_1_53(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 108:
|
|
fdilate_1_54(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 109:
|
|
ferode_1_54(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 110:
|
|
fdilate_1_55(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 111:
|
|
ferode_1_55(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 112:
|
|
fdilate_1_56(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 113:
|
|
ferode_1_56(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 114:
|
|
fdilate_1_57(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
case 115:
|
|
ferode_1_57(datad, w, h, wpld, datas, wpls);
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/*--------------------------------------------------------------------------*
|
|
* Low-level auto-generated static routines *
|
|
*--------------------------------------------------------------------------*/
|
|
/*
|
|
* N.B. In all the low-level routines, the part of the image
|
|
* that is accessed has been clipped by 32 pixels on
|
|
* all four sides. This is done in the higher level
|
|
* code by redefining w and h smaller and by moving the
|
|
* start-of-image pointers up to the beginning of this
|
|
* interior rectangle.
|
|
*/
|
|
static void
|
|
fdilate_1_0(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_0(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_1(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_1(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_2(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_2(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_3(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_3(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_4(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_4(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_5(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_5(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_6(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_6(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_7(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_7(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_8(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_8(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_9(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_9(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_10(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_10(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_11(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_11(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_12(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_12(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_13(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_13(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_14(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_14(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_15(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_15(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_16(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_16(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_17(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_17(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_18(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_18(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_19(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_19(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_20(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_20(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_21(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_21(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_22(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
|
|
((*(sptr) >> 22) | (*(sptr - 1) << 10));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_22(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
|
|
((*(sptr) << 22) | (*(sptr + 1) >> 10));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_23(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 25) | (*(sptr + 1) >> 7)) |
|
|
((*(sptr) << 24) | (*(sptr + 1) >> 8)) |
|
|
((*(sptr) << 23) | (*(sptr + 1) >> 9)) |
|
|
((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
|
|
((*(sptr) >> 22) | (*(sptr - 1) << 10)) |
|
|
((*(sptr) >> 23) | (*(sptr - 1) << 9)) |
|
|
((*(sptr) >> 24) | (*(sptr - 1) << 8));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_23(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 25) | (*(sptr - 1) << 7)) &
|
|
((*(sptr) >> 24) | (*(sptr - 1) << 8)) &
|
|
((*(sptr) >> 23) | (*(sptr - 1) << 9)) &
|
|
((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
|
|
((*(sptr) << 22) | (*(sptr + 1) >> 10)) &
|
|
((*(sptr) << 23) | (*(sptr + 1) >> 9)) &
|
|
((*(sptr) << 24) | (*(sptr + 1) >> 8));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_24(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 25) | (*(sptr + 1) >> 7)) |
|
|
((*(sptr) << 24) | (*(sptr + 1) >> 8)) |
|
|
((*(sptr) << 23) | (*(sptr + 1) >> 9)) |
|
|
((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
|
|
((*(sptr) >> 22) | (*(sptr - 1) << 10)) |
|
|
((*(sptr) >> 23) | (*(sptr - 1) << 9)) |
|
|
((*(sptr) >> 24) | (*(sptr - 1) << 8)) |
|
|
((*(sptr) >> 25) | (*(sptr - 1) << 7));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_24(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 25) | (*(sptr - 1) << 7)) &
|
|
((*(sptr) >> 24) | (*(sptr - 1) << 8)) &
|
|
((*(sptr) >> 23) | (*(sptr - 1) << 9)) &
|
|
((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
|
|
((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
|
|
((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
|
|
((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
|
|
((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
|
|
((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
|
|
((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
|
|
((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
|
|
((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
|
|
((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
|
|
((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
|
|
((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
|
|
((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
|
|
((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
|
|
((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
|
|
((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
|
|
((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
|
|
((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
|
|
((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
|
|
((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
|
|
((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
|
|
((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
|
|
((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
|
|
((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
|
|
((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
|
|
((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
|
|
((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
|
|
((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
|
|
((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
|
|
((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
|
|
((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
|
|
((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
|
|
((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
|
|
((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
|
|
((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
|
|
((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
|
|
((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
|
|
((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
|
|
((*(sptr) << 22) | (*(sptr + 1) >> 10)) &
|
|
((*(sptr) << 23) | (*(sptr + 1) >> 9)) &
|
|
((*(sptr) << 24) | (*(sptr + 1) >> 8)) &
|
|
((*(sptr) << 25) | (*(sptr + 1) >> 7));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_25(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls)) |
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_25(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls)) &
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_26(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_26(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_27(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_27(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_28(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_28(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_29(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_29(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_30(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_30(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_31(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_31(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_32(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_32(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_33(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_33(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_34(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_34(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_35(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_35(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_36(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_36(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_37(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_37(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_38(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_38(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_39(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_39(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_40(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_40(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_41(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_41(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_42(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_42(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_43(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_43(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_44(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_44(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_45(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls20)) |
|
|
(*(sptr + wpls19)) |
|
|
(*(sptr + wpls18)) |
|
|
(*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17)) |
|
|
(*(sptr - wpls18)) |
|
|
(*(sptr - wpls19));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_45(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls20)) &
|
|
(*(sptr - wpls19)) &
|
|
(*(sptr - wpls18)) &
|
|
(*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17)) &
|
|
(*(sptr + wpls18)) &
|
|
(*(sptr + wpls19));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_46(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls20)) |
|
|
(*(sptr + wpls19)) |
|
|
(*(sptr + wpls18)) |
|
|
(*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17)) |
|
|
(*(sptr - wpls18)) |
|
|
(*(sptr - wpls19)) |
|
|
(*(sptr - wpls20));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_46(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls20)) &
|
|
(*(sptr - wpls19)) &
|
|
(*(sptr - wpls18)) &
|
|
(*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17)) &
|
|
(*(sptr + wpls18)) &
|
|
(*(sptr + wpls19)) &
|
|
(*(sptr + wpls20));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_47(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls22)) |
|
|
(*(sptr + wpls21)) |
|
|
(*(sptr + wpls20)) |
|
|
(*(sptr + wpls19)) |
|
|
(*(sptr + wpls18)) |
|
|
(*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17)) |
|
|
(*(sptr - wpls18)) |
|
|
(*(sptr - wpls19)) |
|
|
(*(sptr - wpls20)) |
|
|
(*(sptr - wpls21)) |
|
|
(*(sptr - wpls22));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_47(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls22)) &
|
|
(*(sptr - wpls21)) &
|
|
(*(sptr - wpls20)) &
|
|
(*(sptr - wpls19)) &
|
|
(*(sptr - wpls18)) &
|
|
(*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17)) &
|
|
(*(sptr + wpls18)) &
|
|
(*(sptr + wpls19)) &
|
|
(*(sptr + wpls20)) &
|
|
(*(sptr + wpls21)) &
|
|
(*(sptr + wpls22));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_48(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22, wpls23, wpls24;
|
|
l_int32 wpls25;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
wpls23 = 23 * wpls;
|
|
wpls24 = 24 * wpls;
|
|
wpls25 = 25 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls25)) |
|
|
(*(sptr + wpls24)) |
|
|
(*(sptr + wpls23)) |
|
|
(*(sptr + wpls22)) |
|
|
(*(sptr + wpls21)) |
|
|
(*(sptr + wpls20)) |
|
|
(*(sptr + wpls19)) |
|
|
(*(sptr + wpls18)) |
|
|
(*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17)) |
|
|
(*(sptr - wpls18)) |
|
|
(*(sptr - wpls19)) |
|
|
(*(sptr - wpls20)) |
|
|
(*(sptr - wpls21)) |
|
|
(*(sptr - wpls22)) |
|
|
(*(sptr - wpls23)) |
|
|
(*(sptr - wpls24));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_48(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22, wpls23, wpls24;
|
|
l_int32 wpls25;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
wpls23 = 23 * wpls;
|
|
wpls24 = 24 * wpls;
|
|
wpls25 = 25 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls25)) &
|
|
(*(sptr - wpls24)) &
|
|
(*(sptr - wpls23)) &
|
|
(*(sptr - wpls22)) &
|
|
(*(sptr - wpls21)) &
|
|
(*(sptr - wpls20)) &
|
|
(*(sptr - wpls19)) &
|
|
(*(sptr - wpls18)) &
|
|
(*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17)) &
|
|
(*(sptr + wpls18)) &
|
|
(*(sptr + wpls19)) &
|
|
(*(sptr + wpls20)) &
|
|
(*(sptr + wpls21)) &
|
|
(*(sptr + wpls22)) &
|
|
(*(sptr + wpls23)) &
|
|
(*(sptr + wpls24));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_49(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22, wpls23, wpls24;
|
|
l_int32 wpls25;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
wpls23 = 23 * wpls;
|
|
wpls24 = 24 * wpls;
|
|
wpls25 = 25 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr + wpls25)) |
|
|
(*(sptr + wpls24)) |
|
|
(*(sptr + wpls23)) |
|
|
(*(sptr + wpls22)) |
|
|
(*(sptr + wpls21)) |
|
|
(*(sptr + wpls20)) |
|
|
(*(sptr + wpls19)) |
|
|
(*(sptr + wpls18)) |
|
|
(*(sptr + wpls17)) |
|
|
(*(sptr + wpls16)) |
|
|
(*(sptr + wpls15)) |
|
|
(*(sptr + wpls14)) |
|
|
(*(sptr + wpls13)) |
|
|
(*(sptr + wpls12)) |
|
|
(*(sptr + wpls11)) |
|
|
(*(sptr + wpls10)) |
|
|
(*(sptr + wpls9)) |
|
|
(*(sptr + wpls8)) |
|
|
(*(sptr + wpls7)) |
|
|
(*(sptr + wpls6)) |
|
|
(*(sptr + wpls5)) |
|
|
(*(sptr + wpls4)) |
|
|
(*(sptr + wpls3)) |
|
|
(*(sptr + wpls2)) |
|
|
(*(sptr + wpls)) |
|
|
(*sptr) |
|
|
(*(sptr - wpls)) |
|
|
(*(sptr - wpls2)) |
|
|
(*(sptr - wpls3)) |
|
|
(*(sptr - wpls4)) |
|
|
(*(sptr - wpls5)) |
|
|
(*(sptr - wpls6)) |
|
|
(*(sptr - wpls7)) |
|
|
(*(sptr - wpls8)) |
|
|
(*(sptr - wpls9)) |
|
|
(*(sptr - wpls10)) |
|
|
(*(sptr - wpls11)) |
|
|
(*(sptr - wpls12)) |
|
|
(*(sptr - wpls13)) |
|
|
(*(sptr - wpls14)) |
|
|
(*(sptr - wpls15)) |
|
|
(*(sptr - wpls16)) |
|
|
(*(sptr - wpls17)) |
|
|
(*(sptr - wpls18)) |
|
|
(*(sptr - wpls19)) |
|
|
(*(sptr - wpls20)) |
|
|
(*(sptr - wpls21)) |
|
|
(*(sptr - wpls22)) |
|
|
(*(sptr - wpls23)) |
|
|
(*(sptr - wpls24)) |
|
|
(*(sptr - wpls25));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_49(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2, wpls3, wpls4;
|
|
l_int32 wpls5, wpls6, wpls7, wpls8;
|
|
l_int32 wpls9, wpls10, wpls11, wpls12;
|
|
l_int32 wpls13, wpls14, wpls15, wpls16;
|
|
l_int32 wpls17, wpls18, wpls19, wpls20;
|
|
l_int32 wpls21, wpls22, wpls23, wpls24;
|
|
l_int32 wpls25;
|
|
|
|
wpls2 = 2 * wpls;
|
|
wpls3 = 3 * wpls;
|
|
wpls4 = 4 * wpls;
|
|
wpls5 = 5 * wpls;
|
|
wpls6 = 6 * wpls;
|
|
wpls7 = 7 * wpls;
|
|
wpls8 = 8 * wpls;
|
|
wpls9 = 9 * wpls;
|
|
wpls10 = 10 * wpls;
|
|
wpls11 = 11 * wpls;
|
|
wpls12 = 12 * wpls;
|
|
wpls13 = 13 * wpls;
|
|
wpls14 = 14 * wpls;
|
|
wpls15 = 15 * wpls;
|
|
wpls16 = 16 * wpls;
|
|
wpls17 = 17 * wpls;
|
|
wpls18 = 18 * wpls;
|
|
wpls19 = 19 * wpls;
|
|
wpls20 = 20 * wpls;
|
|
wpls21 = 21 * wpls;
|
|
wpls22 = 22 * wpls;
|
|
wpls23 = 23 * wpls;
|
|
wpls24 = 24 * wpls;
|
|
wpls25 = 25 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*(sptr - wpls25)) &
|
|
(*(sptr - wpls24)) &
|
|
(*(sptr - wpls23)) &
|
|
(*(sptr - wpls22)) &
|
|
(*(sptr - wpls21)) &
|
|
(*(sptr - wpls20)) &
|
|
(*(sptr - wpls19)) &
|
|
(*(sptr - wpls18)) &
|
|
(*(sptr - wpls17)) &
|
|
(*(sptr - wpls16)) &
|
|
(*(sptr - wpls15)) &
|
|
(*(sptr - wpls14)) &
|
|
(*(sptr - wpls13)) &
|
|
(*(sptr - wpls12)) &
|
|
(*(sptr - wpls11)) &
|
|
(*(sptr - wpls10)) &
|
|
(*(sptr - wpls9)) &
|
|
(*(sptr - wpls8)) &
|
|
(*(sptr - wpls7)) &
|
|
(*(sptr - wpls6)) &
|
|
(*(sptr - wpls5)) &
|
|
(*(sptr - wpls4)) &
|
|
(*(sptr - wpls3)) &
|
|
(*(sptr - wpls2)) &
|
|
(*(sptr - wpls)) &
|
|
(*sptr) &
|
|
(*(sptr + wpls)) &
|
|
(*(sptr + wpls2)) &
|
|
(*(sptr + wpls3)) &
|
|
(*(sptr + wpls4)) &
|
|
(*(sptr + wpls5)) &
|
|
(*(sptr + wpls6)) &
|
|
(*(sptr + wpls7)) &
|
|
(*(sptr + wpls8)) &
|
|
(*(sptr + wpls9)) &
|
|
(*(sptr + wpls10)) &
|
|
(*(sptr + wpls11)) &
|
|
(*(sptr + wpls12)) &
|
|
(*(sptr + wpls13)) &
|
|
(*(sptr + wpls14)) &
|
|
(*(sptr + wpls15)) &
|
|
(*(sptr + wpls16)) &
|
|
(*(sptr + wpls17)) &
|
|
(*(sptr + wpls18)) &
|
|
(*(sptr + wpls19)) &
|
|
(*(sptr + wpls20)) &
|
|
(*(sptr + wpls21)) &
|
|
(*(sptr + wpls22)) &
|
|
(*(sptr + wpls23)) &
|
|
(*(sptr + wpls24)) &
|
|
(*(sptr + wpls25));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_50(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
|
|
(*(sptr + wpls)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_50(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
|
|
(*(sptr - wpls)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_51(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
|
|
(*(sptr + wpls)) |
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
|
|
(*(sptr - wpls)) |
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_51(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
|
|
(*(sptr - wpls)) &
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
|
|
(*(sptr + wpls)) &
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_52(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
|
|
((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) |
|
|
(*(sptr + wpls2)) |
|
|
((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) |
|
|
((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) |
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
|
|
(*(sptr + wpls)) |
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) |
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
|
|
(*(sptr - wpls)) |
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_52(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
|
|
((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) &
|
|
(*(sptr - wpls2)) &
|
|
((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) &
|
|
((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) &
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
|
|
(*(sptr - wpls)) &
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) &
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
|
|
(*(sptr + wpls)) &
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_53(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
|
|
((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) |
|
|
(*(sptr + wpls2)) |
|
|
((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) |
|
|
((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) |
|
|
((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) |
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
|
|
(*(sptr + wpls)) |
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
|
|
((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) |
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
|
|
((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) |
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
|
|
(*(sptr - wpls)) |
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) |
|
|
((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) |
|
|
((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) |
|
|
((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) |
|
|
(*(sptr - wpls2)) |
|
|
((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) |
|
|
((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_53(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
|
|
((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) &
|
|
(*(sptr - wpls2)) &
|
|
((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) &
|
|
((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) &
|
|
((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) &
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
|
|
(*(sptr - wpls)) &
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
|
|
((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) &
|
|
((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
|
|
((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
|
|
((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) &
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
|
|
(*(sptr + wpls)) &
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) &
|
|
((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) &
|
|
((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) &
|
|
((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) &
|
|
(*(sptr + wpls2)) &
|
|
((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) &
|
|
((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_54(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
|
|
(*(sptr - wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_54(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
|
|
(*(sptr + wpls));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_55(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*sptr) |
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_55(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = (*sptr) &
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_56(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) |
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
|
|
(*sptr) |
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
|
|
((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_56(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) &
|
|
((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
|
|
(*sptr) &
|
|
((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
|
|
((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
fdilate_1_57(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
|
|
(*sptr) |
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) |
|
|
((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void
|
|
ferode_1_57(l_uint32 *datad,
|
|
l_int32 w,
|
|
l_int32 h,
|
|
l_int32 wpld,
|
|
l_uint32 *datas,
|
|
l_int32 wpls)
|
|
{
|
|
l_int32 i;
|
|
l_int32 j, pwpls;
|
|
l_uint32 *sptr, *dptr;
|
|
l_int32 wpls2;
|
|
|
|
wpls2 = 2 * wpls;
|
|
pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
|
|
|
|
for (i = 0; i < h; i++) {
|
|
sptr = datas + i * wpls;
|
|
dptr = datad + i * wpld;
|
|
for (j = 0; j < pwpls; j++, sptr++, dptr++) {
|
|
*dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
|
|
((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
|
|
(*sptr) &
|
|
((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) &
|
|
((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30));
|
|
}
|
|
}
|
|
}
|
|
|