Opened 13 years ago

Closed 12 years ago

#126 closed defect (fixed)

Query about 3D Atrous Reconstruction

Reported by: simon.guest@… Owned by: MatthewWhiting
Priority: normal Milestone: Release-1.2
Component: Wavelet reconstruction Version: 1.1.13
Severity: normal Keywords:
Cc:

Description

Shouldn't the value of x be at least bounded by xdim where the xLim1==xLim2, it is possible to create a value of x that exceeds the x dimension (or is negative). Therefore, oldpos will be incorrect and possibly some random part of the memory and potentially non zero.

Likewise for old row with regard to y bounds.

for(int xoffset=-filterHW; xoffset<=filterHW; xoffset++){
	long x = long(xpos) + spacing*xoffset;

	// Boundary conditions -- assume reflection at boundaries.
	// Use limits as calculated above
		if(xLim1[ypos]!=xLim2[ypos]){
		// if these are equal we will get into an infinite loop
			while((x<xLim1[ypos])||(x>xLim2[ypos])){
				if(x<xLim1[ypos]) x = 2*xLim1[ypos] - x;      
				else if(x>xLim2[ypos]) x = 2*xLim2[ypos] - x;      
			}
		}

	size_t oldpos = oldchan + oldrow + x;

	filterpos++;

	if(isGood[oldpos]) 
		wavelet[pos] -= filter[filterpos]*coeffs[oldpos];
}

Change History (2)

comment:1 Changed 12 years ago by MatthewWhiting

Component: Building/InstallationWavelet reconstruction
Milestone: Release-1.1.14
Status: newassigned

Address this for upcoming release

comment:2 Changed 12 years ago by MatthewWhiting

Resolution: fixed
Status: assignedclosed

I have made several changes to the way the wavelet reconstruction handles blank pixels, which has gotten away from the use of parameters like xLim1 etc. The indexing of the bounds is now more robust and memory leaks like those identified in the ticket should now not occur.

Version 1.2 will be released shortly. Closing this ticket.

Note: See TracTickets for help on using tickets.