Skip to content

Discrepancy steps LCL and RVU in code #419

@LarsKooijman

Description

@LarsKooijman

LCL and RVU share a lot of the same steps in the processing of the image block. Although the text between the two sections differs slightly the steps are the same for the following points:

For each local region V in I:
a) rotate V such that dominant ridge flow is perpendicular to x-axis using nearest neighbour
interpolation;
b) crop rotated V such that no invalid regions are included;
c) with V obtain the ridge-valley signature S (6.2.3.2);
d) determine DT using linear regression on S;
e) for each element S(x), set threshold T(x) of x being ridge or valley based on DT;
f) classify columns in V as ridge (1) or valley (0) with P x = 0, otherwise.
1, if S x < T x ;
g) determine ridge-valley transition vector C from P;

However, the code base, there is a discrepancy in RVU that does not reflect LCL (or vice versa).

Specifically, in RVUPHistogram.cpp on line 314 the for-loop parameters are defined as

	for (unsigned int i = 0; i < ridval.size() - 1; i++) {
		// circular shift from back to front
		if (i == 0) {
			j = ridval.size() - 1;
		} else {
			j = i - 1;
		}
		if (ridval[i] != ridval[j]) {
			change.push_back(1);
		} else {
			change.push_back(0);
		}
	}

Of note is that the ridval.size() has 1 subtracted from it, so the loop does not loop over 32 pixels, but over 31 instead.

Whereas in LCL.cpp on line 323 we see the for-loop actually indexing over the full 32 pixels

for (unsigned int i = 0; i < ridval.size(); i++) {
		// circular shift from back to front
		if (i == 0) {
			j = ridval.size() - 1;
		} else {
			j = i - 1;
		}
		if (ridval[i] != ridval[j]) {
			change.push_back(1);
		} else {
			change.push_back(0);
		}
	}

The minus 1 in RVU cannot be ascribed to step j) in section 6.2.5.2. in the norm, as this step in the process is covered from line 346 in the RVU code

for (int i = changeIndex[0] + 1;
		     i < changeIndex[changeIndex.size() - 1]; i++) {
			ridvalComplete.push_back(ridval[i]);
		}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions