A method of detecting a flame in an image comprising the steps of: acquiring a series of infrared images from an infrared imager; calculating image flow vectors, that correspond to each pixel in a corresponding one of the infrared images, for each of the series of infrared images and storing the image flow vectors in a corresponding 2D vector array (38, 40); generating at least one 3D image flow data set (48A-48D) from the corresponding 2D vector arrays; generating a 2D pixel intensity array for each of the series of infrared images; generating a 3D pixel intensity data set from the 2D pixel intensity arrays; the method characterised in that it further comprises the steps of: calculating a Fourier Transform (54, 56A-56D, 64) based on the at least one 3D image flow data set and the 3D pixel intensity data set; calculating infrared metrics based on the at least one 3D image flow data set (48A-48D), the 3D pixel intensity data set, the Fourier Transform (54, 56A-56D) based on the 3D image flow data set, and the Fourier Transform based on the 3D pixel intensity data set; comparing the infrared metrics to an infrared threshold criteria to detect a flame; generating a corresponding 2D threshold array for each of the series of infrared images based on the infrared metrics and generating a 3D threshold data set from the 2D threshold arrays; determining a flame status based on the 3D threshold data set; and conveying the flame status to a user device. acquiring a series of infrared images from an infrared imager; calculating image flow vectors, that correspond to each pixel in a corresponding one of the infrared images, for each of the series of infrared images and storing the image flow vectors in a corresponding 2D vector array (38, 40); generating at least one 3D image flow data set (48A-48D) from the corresponding 2D vector arrays; generating a 2D pixel intensity array for each of the series of infrared images; generating a 3D pixel intensity data set from the 2D pixel intensity arrays; the method characterised in that it further comprises the steps of: calculating a Fourier Transform (54, 56A-56D, 64) based on the at least one 3D image flow data set and the 3D pixel intensity data set; calculating infrared metrics based on the at least one 3D image flow data set (48A-48D), the 3D pixel intensity data set, the Fourier Transform (54, 56A-56D) based on the 3D image flow data set, and the Fourier Transform based on the 3D pixel intensity data set; comparing the infrared metrics to an infrared threshold criteria to detect a flame; generating a corresponding 2D threshold array for each of the series of infrared images based on the infrared metrics and generating a 3D threshold data set from the 2D threshold arrays; determining a flame status based on the 3D threshold data set; and conveying the flame status to a user device. calculating a Fourier Transform (54, 56A-56D, 64) based on the at least one 3D image flow data set and the 3D pixel intensity data set; calculating infrared metrics based on the at least one 3D image flow data set (48A-48D), the 3D pixel intensity data set, the Fourier Transform (54, 56A-56D) based on the 3D image flow data set, and the Fourier Transform based on the 3D pixel intensity data set; comparing the infrared metrics to an infrared threshold criteria to detect a flame; generating a corresponding 2D threshold array for each of the series of infrared images based on the infrared metrics and generating a 3D threshold data set from the 2D threshold arrays; determining a flame status based on the 3D threshold data set; and conveying the flame status to a user device.