\ * icvRussel * \****************************************************************************************/
| 882 | * icvRussel * |
| 883 | \****************************************************************************************/ |
| 884 | static void |
| 885 | icvRussel( CvEMDState * state ) |
| 886 | { |
| 887 | int i, j, min_i = -1, min_j = -1; |
| 888 | float min_delta, diff; |
| 889 | CvNode1D u_head, *cur_u, *prev_u; |
| 890 | CvNode1D v_head, *cur_v, *prev_v; |
| 891 | CvNode1D *prev_u_min_i = 0, *prev_v_min_j = 0, *remember; |
| 892 | CvNode1D *u = state->u, *v = state->v; |
| 893 | int ssize = state->ssize, dsize = state->dsize; |
| 894 | float eps = CV_EMD_EPS * state->max_cost; |
| 895 | float **cost = state->cost; |
| 896 | float **delta = state->delta; |
| 897 | |
| 898 | /* initialize the rows list (ur), and the columns list (vr) */ |
| 899 | u_head.next = u; |
| 900 | for( i = 0; i < ssize; i++ ) |
| 901 | { |
| 902 | u[i].next = u + i + 1; |
| 903 | } |
| 904 | u[ssize - 1].next = 0; |
| 905 | |
| 906 | v_head.next = v; |
| 907 | for( i = 0; i < dsize; i++ ) |
| 908 | { |
| 909 | v[i].val = -CV_EMD_INF; |
| 910 | v[i].next = v + i + 1; |
| 911 | } |
| 912 | v[dsize - 1].next = 0; |
| 913 | |
| 914 | /* find the maximum row and column values (ur[i] and vr[j]) */ |
| 915 | for( i = 0; i < ssize; i++ ) |
| 916 | { |
| 917 | float u_val = -CV_EMD_INF; |
| 918 | float *cost_row = cost[i]; |
| 919 | |
| 920 | for( j = 0; j < dsize; j++ ) |
| 921 | { |
| 922 | float temp = cost_row[j]; |
| 923 | |
| 924 | if( u_val < temp ) |
| 925 | u_val = temp; |
| 926 | if( v[j].val < temp ) |
| 927 | v[j].val = temp; |
| 928 | } |
| 929 | u[i].val = u_val; |
| 930 | } |
| 931 | |
| 932 | /* compute the delta matrix */ |
| 933 | for( i = 0; i < ssize; i++ ) |
| 934 | { |
| 935 | float u_val = u[i].val; |
| 936 | float *delta_row = delta[i]; |
| 937 | float *cost_row = cost[i]; |
| 938 | |
| 939 | for( j = 0; j < dsize; j++ ) |
| 940 | { |
| 941 | delta_row[j] = cost_row[j] - u_val - v[j].val; |
no test coverage detected