What is a resourceful method to calculate FWHM (full width at half the max) of every column in an image. Assuming the image is having a very high resolution for example 1944 x 2592.
Logic so far (applied to every column):
gBW = ImageApply[Mean, zeroS];
data = ImageData[gBW];
datay = data[[All, 1]];
(* For column 1 through 1992 *)
datax = Table[i, {i, 1, Length[data]}];
ListLinePlot[data[[All, 1]], PlotStyle -> Thick, PlotTheme -> "Detailed"];
(*Colum 1 Peak*)
datay = datay/Max[datay];
L = Length[datay];
Mag = 4;
PP = 2.2;
(*Find the centerindex of maximum*)
CenterIndex = Position[datay, Max[datay]][[1]]; (*Find index of max, first occurence*)
(*start searching lead trail*)
i = 2;
While[Sign[datay[[i]] - 0.5] == Sign[datay[[i - 1]] - 0.5],
i = i + 1];
Interp = ((0.5 - datay[[i - 1]])/(datay[[i]] - datay[[i - 1]]))
Tlead = datax[[i - 1]] + Interp*(datax[[i]] - datax[[i - 1]])
i = CenterIndex[[1]] + 1
(* Start Searching for the next crossing at center *)
While[Sign[datay[[i]] - 0.5] == Sign[datay[[i - 1]] - 0.5] && (i <= L - 1),
i = i + 1];
If[i != L,
Interp = (0.5 - datay[[i - 1]])/(datay[[i]] - datay[[i - 1]]);
Ttrail = datax[[i - 1]] + Interp*(datax[[i]] - datax[[i - 1]]);
FWHM = ((Ttrail - Tlead)/Mag)*PP]
Is there a better approach to do this or a logic to find FWHM along all the columns on the image and plot the same? ( assuming it is going to be a huge number like 2592 columns)
Application: Spectroscopy.