In JuliaImages we deliberately use N0f8
from FixedPointNumbers to replace UInt8
because otherwise, it’s often very confusing what is white in image processing (1
or 255
?).
Converting Array{UInt8, 2}
to Array{N0f8, 2}
can be done efficiently via reinterpret(N0f8, img_uint8)
. And the reverse if rawview(img_n0f8)
Many operations like bitwise_and
are actually a pointwise operations, and thus it’s better to write the scalar version, e.g.,:
bitwise_and(x::T, y::T) where T<:Number = 0xff * (x & y)
and use broadcasting
C = bitwise_and.(A, B)
# or in-place version
C .= bitwise_and.(A, B)
Didn’t check if the code runs, but I think you can get the idea here.