Issue 18204: Conv. 'kernel_size()' incorrect for symmetric kernels (vsiplxx-rtf) Source: (Mr. Brooks Moses, brooks.moses(at)dpdx.net) Nature: Revision Severity: Minor Summary: Copied from an internal bug report: PROBLEM: Convolution accessor 'kernel_size()' is defined to return the domain having the same length for each dimension as 'filter_coeffs'. However, when constructing a convolution with a symmetric kernel (sym_even_len_odd or sym_even_len_even), 'filter_coeffs' only holds a subset of coefficients. In those cases, the true kernel size is larder (For example, in 1D convolutions the true size will either '2 * filter_coeffs.size()' or '2 * filter_coeff.size() + 1'). In contrast, the C-VSIPL spec defines the kernel size as M, and specifies the size of 'filter_coeffs' as either M if symmetry = non_sym, or 'floor(M/2)' if 'symmetry == sym_even_len_{odd,even}'. Queries to return the kernel size of a convolution return M. PROPOSED FIX: Change wording of 'kernel_size()' accessor (and Convolution constructor effects) to indicate correct kernel size. TODO: Review specification of Correlation, FIR, and IIR for similar error. Resolution: In the interest of closing the current RTF so that the solutions to resolved issues can be made publically available, this issue is deferred to the next RTF. Disposition: Deferred Revised Text: Actions taken: October 23, 2012: received issue Discussion: End of Annotations:===== te: Tue, 23 Oct 2012 11:09:33 -0700 From: Brooks Moses User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 To: Subject: VSIPL++ issue (#10 from me) X-OriginalArrivalTime: 23 Oct 2012 18:09:33.0372 (UTC) FILETIME=[8DD26FC0:01CDB149] Name: Brooks Moses Employer: Mentor Graphics mailFrom: brooks_moses@mentor.com Terms_Agreement: I agree Specification: VSIPL++ Section: 13.4.3 [signal.convol.constructors] FormalNumber: ptc/2012-07-27 Version: 1.2 - FTF Beta 1 Doc_Year: 2012 Doc_Month: August Doc_Day: 10 Page: 211 Title: Conv. 'kernel_size()' incorrect for symmetric kernels. Nature: Bug Severity: Minor B1: Report Issue Description: Copied from an internal bug report: PROBLEM: Convolution accessor 'kernel_size()' is defined to return the domain having the same length for each dimension as 'filter_coeffs'. However, when constructing a convolution with a symmetric kernel (sym_even_len_odd or sym_even_len_even), 'filter_coeffs' only holds a subset of coefficients. In those cases, the true kernel size is larder (For example, in 1D convolutions the true size will either '2 * filter_coeffs.size()' or '2 * filter_coeff.size() + 1'). In contrast, the C-VSIPL spec defines the kernel size as M, and specifies the size of 'filter_coeffs' as either M if symmetry = non_sym, or 'floor(M/2)' if 'symmetry == sym_even_len_{odd,even}'. Queries to return the kernel size of a convolution return M. PROPOSED FIX: Change wording of 'kernel_size()' accessor (and Convolution constructor effects) to indicate correct kernel size. TODO: Review specification of Correlation, FIR, and IIR for similar error.