A method for generating a colour filter for modifying a spectral response of a vision system to make the vision system more colorimetric and satisfy filter design criteria min min f λ, M ‖ f λ Mt Q _ λ − χ (λ)|| where f ( λ) defines the spectral transmittance of the colour filter, M is a fixed 3×3 linear transformation matrix Q (λ) denotes the vector of red-spectral, green-spectral and blue-spectral sensitivities and x (λ) denotes the colour matching functions, the method comprising: receiving an RGB spectral response of the vision system for a colour target under predetermined illumination; executing, by a processor of a computer system, computer program instructions configured to apply the RGB spectral response to a bilinear optimisation problem that simultaneously determines: i) a colour correction matrix to transform the RGB spectral response to XYZ colour space; and, ii) spectral transmission parameters of the colour filter; executing computer program instructions configured to solve the bilinear optimisation problem by: solving min D, M ‖ DQM − χ ‖ where Q and χ are respectively N×3 matrices capturing the spectral response of the vision system and the XYZ colour matching functions. N refers to the sampling number across the visible range, M is a 3×3 correction matrix and D is an N×N diagonal matrix or solving min f _, M ‖ C t diag f _ QM − C t χ ‖ where C denotes an AxN set of colour signal spectra, Q and χ are the A × 3 matrices encoding, respectively, the spectral response of the vision system and XYZ colour matching functions where A comprises the number of samples taken, the sampling being performed at predetermined intervals; and, providing the colour filter using the parameters. χ (λ)|| where f ( λ) defines the spectral transmittance of the colour filter, M is a fixed 3×3 linear transformation matrix Q (λ) denotes the vector of red-spectral, green-spectral and blue-spectral sensitivities and x (λ) denotes the colour matching functions, the method comprising: receiving an RGB spectral response of the vision system for a colour target under predetermined illumination; executing, by a processor of a computer system, computer program instructions configured to apply the RGB spectral response to a bilinear optimisation problem that simultaneously determines: i) a colour correction matrix to transform the RGB spectral response to XYZ colour space; and, ii) spectral transmission parameters of the colour filter; executing computer program instructions configured to solve the bilinear optimisation problem by: solving min D, M ‖ DQM − χ ‖ where Q and χ are respectively N×3 matrices capturing the spectral response of the vision system and the XYZ colour matching functions. N refers to the sampling number across the visible range, M is a 3×3 correction matrix and D is an N×N diagonal matrix or solving min f _, M ‖ C t diag f _ QM − C t χ ‖ where C denotes an AxN set of colour signal spectra, Q and χ are the A × 3 matrices encoding, respectively, the spectral response of the vision system and XYZ colour matching functions where A comprises the number of samples taken, the sampling being performed at predetermined intervals; and, providing the colour filter using the parameters. receiving an RGB spectral response of the vision system for a colour target under predetermined illumination; executing, by a processor of a computer system, computer program instructions configured to apply the RGB spectral response to a bilinear optimisation problem that simultaneously determines: i) a colour correction matrix to transform the RGB spectral response to XYZ colour space; and, ii) spectral transmission parameters of the colour filter; i) a colour correction matrix to transform the RGB spectral response to XYZ colour space; and, ii) spectral transmission parameters of the colour filter; executing computer program instructions configured to solve the bilinear optimisation problem by: solving min D, M ‖ DQM − χ ‖ where Q and χ are respectively N×3 matrices capturing the spectral response of the vision system and the XYZ colour matching functions. N refers to the sampling number across the visible range, M is a 3×3 correction matrix and D is an N×N diagonal matrix or solving min f _, M ‖ C t diag f _ QM − C t χ ‖ where C denotes an AxN set of colour signal spectra, Q and χ are the A × 3 matrices encoding, respectively, the spectral response of the vision system and XYZ colour matching functions where A comprises the number of samples taken, the sampling being performed at predetermined intervals; and, providing the colour filter using the parameters. solving min D, M ‖ DQM − χ ‖ where Q and χ are respectively N×3 matrices capturing the spectral response of the vision system and the XYZ colour matching functions. N refers to the sampling number across the visible range, M is a 3×3 correction matrix and D is an N×N diagonal matrix or solving min f _, M ‖ C t diag f _ QM − C t χ ‖ where C denotes an AxN set of colour signal spectra, Q and χ are the A × 3 matrices encoding, respectively, the spectral response of the vision system and XYZ colour matching functions where A comprises the number of samples taken, the sampling being performed at predetermined intervals; and, providing the colour filter using the parameters.