Transform Bitmap object into jagged array of RGB tuple values
By convention, F# function names are camelCase, for example transform2D instead of Transform2D.



Hungarian notation is dead and buried. For example, use bitmap instead of pBitmap.



If ImageSearch is a top-level module, declarations do not have to be indented.



Your for...in expressions can be written without brackets. For example, instead of


for tHeightIndex in [ 0 .. tHeight - 1] do



write

for heightIndex in 0 .. height - 1 do


Similarly, instead of


for tWidthIndex in [tStart .. 3 .. tFinish] do



write

for widthIndex in start .. 3 .. finish do


This is not just a style issue, the different versions actually compile to different IL.



The final expression of a function is its return value, so instead of


let tHeight = ...
let tImageArray = [| ... |]
tImageArray



you can write

let height = ...
[| ... |]





In type annotations, it's conventional to have a space on either side of the :, for example instead of


let Transform2D ( (pArrayWidth:int), (pArray:byte[]) ) = 



write

let transform2D (width : int, array : byte[]) =




I can't actually back up this last point. MSDN and FSharp.Core don't seem to stick to one style, even in the same function


let isProperSuperset (x:Set&lt;'T&gt;) (y: Set&lt;'T&gt;) = SetTree.psubset x.Comparer y.Tree x.Tree