Skip to content

Commit

Permalink
[Aardvark.Base.Tensors] Remove duplicated ImageTrafo code
Browse files Browse the repository at this point in the history
  • Loading branch information
hyazinthh committed Apr 16, 2024
1 parent b94bee0 commit ceb441a
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 190 deletions.
2 changes: 1 addition & 1 deletion src/Aardvark.Base.Tensors/Aardvark.Base.Tensors.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
<Compile Include="Extensions\TensorUtilitiesGenerated.fs" />
<Compile Include="Extensions\TensorMath.fs" />
<Compile Include="Extensions\TensorSlicing.fs" />
<Compile Include="PixImage\ImageTrafo.fs" />
<Compile Include="PixImage\PixImageErrorMetric.fs" />
<Compile Include="PixImage\PixImageCube.fs" />
<Compile Include="PixImage\ImageTrafo.fs" />
<Compile Include="PixImage\PixImageImageSharp.fs" />
<Compile Include="Algorithms\QR.fs" />
<Compile Include="Algorithms\SVD.fs" />
Expand Down
132 changes: 66 additions & 66 deletions src/Aardvark.Base.Tensors/PixImage/ImageTrafo.fs
Original file line number Diff line number Diff line change
Expand Up @@ -3,75 +3,75 @@
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module ImageTrafo =
let private composeTable =
Dictionary.ofList [
(ImageTrafo.Identity, ImageTrafo.Identity), ImageTrafo.Identity
(ImageTrafo.Identity, ImageTrafo.Rot90), ImageTrafo.Rot90
(ImageTrafo.Identity, ImageTrafo.Rot180), ImageTrafo.Rot180
(ImageTrafo.Identity, ImageTrafo.Rot270), ImageTrafo.Rot270
(ImageTrafo.Identity, ImageTrafo.MirrorX), ImageTrafo.MirrorX
(ImageTrafo.Identity, ImageTrafo.Transpose), ImageTrafo.Transpose
(ImageTrafo.Identity, ImageTrafo.MirrorY), ImageTrafo.MirrorY
(ImageTrafo.Identity, ImageTrafo.Transverse), ImageTrafo.Transverse
(ImageTrafo.Rot90, ImageTrafo.Identity), ImageTrafo.Rot90
(ImageTrafo.Rot90, ImageTrafo.Rot90), ImageTrafo.Rot180
(ImageTrafo.Rot90, ImageTrafo.Rot180), ImageTrafo.Rot270
(ImageTrafo.Rot90, ImageTrafo.Rot270), ImageTrafo.Identity
(ImageTrafo.Rot90, ImageTrafo.MirrorX), ImageTrafo.Transverse
(ImageTrafo.Rot90, ImageTrafo.Transpose), ImageTrafo.MirrorX
(ImageTrafo.Rot90, ImageTrafo.MirrorY), ImageTrafo.Transpose
(ImageTrafo.Rot90, ImageTrafo.Transverse), ImageTrafo.MirrorY
(ImageTrafo.Rot180, ImageTrafo.Identity), ImageTrafo.Rot180
(ImageTrafo.Rot180, ImageTrafo.Rot90), ImageTrafo.Rot270
(ImageTrafo.Rot180, ImageTrafo.Rot180), ImageTrafo.Identity
(ImageTrafo.Rot180, ImageTrafo.Rot270), ImageTrafo.Rot90
(ImageTrafo.Rot180, ImageTrafo.MirrorX), ImageTrafo.MirrorY
(ImageTrafo.Rot180, ImageTrafo.Transpose), ImageTrafo.Transverse
(ImageTrafo.Rot180, ImageTrafo.MirrorY), ImageTrafo.MirrorX
(ImageTrafo.Rot180, ImageTrafo.Transverse), ImageTrafo.Transpose
(ImageTrafo.Rot270, ImageTrafo.Identity), ImageTrafo.Rot270
(ImageTrafo.Rot270, ImageTrafo.Rot90), ImageTrafo.Identity
(ImageTrafo.Rot270, ImageTrafo.Rot180), ImageTrafo.Rot90
(ImageTrafo.Rot270, ImageTrafo.Rot270), ImageTrafo.Rot180
(ImageTrafo.Rot270, ImageTrafo.MirrorX), ImageTrafo.Transpose
(ImageTrafo.Rot270, ImageTrafo.Transpose), ImageTrafo.MirrorY
(ImageTrafo.Rot270, ImageTrafo.MirrorY), ImageTrafo.Transverse
(ImageTrafo.Rot270, ImageTrafo.Transverse), ImageTrafo.MirrorX
(ImageTrafo.MirrorX, ImageTrafo.Identity), ImageTrafo.MirrorX
(ImageTrafo.MirrorX, ImageTrafo.Rot90), ImageTrafo.Transpose
(ImageTrafo.MirrorX, ImageTrafo.Rot180), ImageTrafo.MirrorY
(ImageTrafo.MirrorX, ImageTrafo.Rot270), ImageTrafo.Transverse
(ImageTrafo.MirrorX, ImageTrafo.MirrorX), ImageTrafo.Identity
(ImageTrafo.MirrorX, ImageTrafo.Transpose), ImageTrafo.Rot90
(ImageTrafo.MirrorX, ImageTrafo.MirrorY), ImageTrafo.Rot180
(ImageTrafo.MirrorX, ImageTrafo.Transverse), ImageTrafo.Rot270
(ImageTrafo.Transpose, ImageTrafo.Identity), ImageTrafo.Transpose
(ImageTrafo.Transpose, ImageTrafo.Rot90), ImageTrafo.MirrorY
(ImageTrafo.Transpose, ImageTrafo.Rot180), ImageTrafo.Transverse
(ImageTrafo.Transpose, ImageTrafo.Rot270), ImageTrafo.MirrorX
(ImageTrafo.Transpose, ImageTrafo.MirrorX), ImageTrafo.Rot270
(ImageTrafo.Transpose, ImageTrafo.Transpose), ImageTrafo.Identity
(ImageTrafo.Transpose, ImageTrafo.MirrorY), ImageTrafo.Rot90
(ImageTrafo.Transpose, ImageTrafo.Transverse), ImageTrafo.Rot180
(ImageTrafo.MirrorY, ImageTrafo.Identity), ImageTrafo.MirrorY
(ImageTrafo.MirrorY, ImageTrafo.Rot90), ImageTrafo.Transverse
(ImageTrafo.MirrorY, ImageTrafo.Rot180), ImageTrafo.MirrorX
(ImageTrafo.MirrorY, ImageTrafo.Rot270), ImageTrafo.Transpose
(ImageTrafo.MirrorY, ImageTrafo.MirrorX), ImageTrafo.Rot180
(ImageTrafo.MirrorY, ImageTrafo.Transpose), ImageTrafo.Rot270
(ImageTrafo.MirrorY, ImageTrafo.MirrorY), ImageTrafo.Identity
(ImageTrafo.MirrorY, ImageTrafo.Transverse), ImageTrafo.Rot90
(ImageTrafo.Transverse, ImageTrafo.Identity), ImageTrafo.Transverse
(ImageTrafo.Transverse, ImageTrafo.Rot90), ImageTrafo.MirrorX
(ImageTrafo.Transverse, ImageTrafo.Rot180), ImageTrafo.Transpose
(ImageTrafo.Transverse, ImageTrafo.Rot270), ImageTrafo.MirrorY
(ImageTrafo.Transverse, ImageTrafo.MirrorX), ImageTrafo.Rot90
(ImageTrafo.Transverse, ImageTrafo.Transpose), ImageTrafo.Rot180
(ImageTrafo.Transverse, ImageTrafo.MirrorY), ImageTrafo.Rot270
(ImageTrafo.Transverse, ImageTrafo.Transverse), ImageTrafo.Identity
LookupTable.lookupTable [
struct (ImageTrafo.Identity, ImageTrafo.Identity), ImageTrafo.Identity
struct (ImageTrafo.Identity, ImageTrafo.Rot90), ImageTrafo.Rot90
struct (ImageTrafo.Identity, ImageTrafo.Rot180), ImageTrafo.Rot180
struct (ImageTrafo.Identity, ImageTrafo.Rot270), ImageTrafo.Rot270
struct (ImageTrafo.Identity, ImageTrafo.MirrorX), ImageTrafo.MirrorX
struct (ImageTrafo.Identity, ImageTrafo.Transpose), ImageTrafo.Transpose
struct (ImageTrafo.Identity, ImageTrafo.MirrorY), ImageTrafo.MirrorY
struct (ImageTrafo.Identity, ImageTrafo.Transverse), ImageTrafo.Transverse
struct (ImageTrafo.Rot90, ImageTrafo.Identity), ImageTrafo.Rot90
struct (ImageTrafo.Rot90, ImageTrafo.Rot90), ImageTrafo.Rot180
struct (ImageTrafo.Rot90, ImageTrafo.Rot180), ImageTrafo.Rot270
struct (ImageTrafo.Rot90, ImageTrafo.Rot270), ImageTrafo.Identity
struct (ImageTrafo.Rot90, ImageTrafo.MirrorX), ImageTrafo.Transverse
struct (ImageTrafo.Rot90, ImageTrafo.Transpose), ImageTrafo.MirrorX
struct (ImageTrafo.Rot90, ImageTrafo.MirrorY), ImageTrafo.Transpose
struct (ImageTrafo.Rot90, ImageTrafo.Transverse), ImageTrafo.MirrorY
struct (ImageTrafo.Rot180, ImageTrafo.Identity), ImageTrafo.Rot180
struct (ImageTrafo.Rot180, ImageTrafo.Rot90), ImageTrafo.Rot270
struct (ImageTrafo.Rot180, ImageTrafo.Rot180), ImageTrafo.Identity
struct (ImageTrafo.Rot180, ImageTrafo.Rot270), ImageTrafo.Rot90
struct (ImageTrafo.Rot180, ImageTrafo.MirrorX), ImageTrafo.MirrorY
struct (ImageTrafo.Rot180, ImageTrafo.Transpose), ImageTrafo.Transverse
struct (ImageTrafo.Rot180, ImageTrafo.MirrorY), ImageTrafo.MirrorX
struct (ImageTrafo.Rot180, ImageTrafo.Transverse), ImageTrafo.Transpose
struct (ImageTrafo.Rot270, ImageTrafo.Identity), ImageTrafo.Rot270
struct (ImageTrafo.Rot270, ImageTrafo.Rot90), ImageTrafo.Identity
struct (ImageTrafo.Rot270, ImageTrafo.Rot180), ImageTrafo.Rot90
struct (ImageTrafo.Rot270, ImageTrafo.Rot270), ImageTrafo.Rot180
struct (ImageTrafo.Rot270, ImageTrafo.MirrorX), ImageTrafo.Transpose
struct (ImageTrafo.Rot270, ImageTrafo.Transpose), ImageTrafo.MirrorY
struct (ImageTrafo.Rot270, ImageTrafo.MirrorY), ImageTrafo.Transverse
struct (ImageTrafo.Rot270, ImageTrafo.Transverse), ImageTrafo.MirrorX
struct (ImageTrafo.MirrorX, ImageTrafo.Identity), ImageTrafo.MirrorX
struct (ImageTrafo.MirrorX, ImageTrafo.Rot90), ImageTrafo.Transpose
struct (ImageTrafo.MirrorX, ImageTrafo.Rot180), ImageTrafo.MirrorY
struct (ImageTrafo.MirrorX, ImageTrafo.Rot270), ImageTrafo.Transverse
struct (ImageTrafo.MirrorX, ImageTrafo.MirrorX), ImageTrafo.Identity
struct (ImageTrafo.MirrorX, ImageTrafo.Transpose), ImageTrafo.Rot90
struct (ImageTrafo.MirrorX, ImageTrafo.MirrorY), ImageTrafo.Rot180
struct (ImageTrafo.MirrorX, ImageTrafo.Transverse), ImageTrafo.Rot270
struct (ImageTrafo.Transpose, ImageTrafo.Identity), ImageTrafo.Transpose
struct (ImageTrafo.Transpose, ImageTrafo.Rot90), ImageTrafo.MirrorY
struct (ImageTrafo.Transpose, ImageTrafo.Rot180), ImageTrafo.Transverse
struct (ImageTrafo.Transpose, ImageTrafo.Rot270), ImageTrafo.MirrorX
struct (ImageTrafo.Transpose, ImageTrafo.MirrorX), ImageTrafo.Rot270
struct (ImageTrafo.Transpose, ImageTrafo.Transpose), ImageTrafo.Identity
struct (ImageTrafo.Transpose, ImageTrafo.MirrorY), ImageTrafo.Rot90
struct (ImageTrafo.Transpose, ImageTrafo.Transverse), ImageTrafo.Rot180
struct (ImageTrafo.MirrorY, ImageTrafo.Identity), ImageTrafo.MirrorY
struct (ImageTrafo.MirrorY, ImageTrafo.Rot90), ImageTrafo.Transverse
struct (ImageTrafo.MirrorY, ImageTrafo.Rot180), ImageTrafo.MirrorX
struct (ImageTrafo.MirrorY, ImageTrafo.Rot270), ImageTrafo.Transpose
struct (ImageTrafo.MirrorY, ImageTrafo.MirrorX), ImageTrafo.Rot180
struct (ImageTrafo.MirrorY, ImageTrafo.Transpose), ImageTrafo.Rot270
struct (ImageTrafo.MirrorY, ImageTrafo.MirrorY), ImageTrafo.Identity
struct (ImageTrafo.MirrorY, ImageTrafo.Transverse), ImageTrafo.Rot90
struct (ImageTrafo.Transverse, ImageTrafo.Identity), ImageTrafo.Transverse
struct (ImageTrafo.Transverse, ImageTrafo.Rot90), ImageTrafo.MirrorX
struct (ImageTrafo.Transverse, ImageTrafo.Rot180), ImageTrafo.Transpose
struct (ImageTrafo.Transverse, ImageTrafo.Rot270), ImageTrafo.MirrorY
struct (ImageTrafo.Transverse, ImageTrafo.MirrorX), ImageTrafo.Rot90
struct (ImageTrafo.Transverse, ImageTrafo.Transpose), ImageTrafo.Rot180
struct (ImageTrafo.Transverse, ImageTrafo.MirrorY), ImageTrafo.Rot270
struct (ImageTrafo.Transverse, ImageTrafo.Transverse), ImageTrafo.Identity
]

let compose (l : ImageTrafo) (r : ImageTrafo) =
composeTable.[(l,r)]
composeTable (struct (l, r))

let inverse =
LookupTable.lookupTable [
Expand Down
88 changes: 1 addition & 87 deletions src/Aardvark.Base.Tensors/PixImage/PixImageCube.fs
Original file line number Diff line number Diff line change
Expand Up @@ -55,92 +55,6 @@ module FSharpPixImageCubeExtensions =
module PixImageCube =

module Trafo =
let private figureOutComposeOp () =

let v = Volume<byte>(V3i.III * 10)

let direct = Array.zeroCreate 8
for o0 in 0..7 do
direct.[o0] <- v.Transformed(unbox o0).Info

for o0 in 0..7 do
for o1 in 0..7 do
let nv = v.Transformed(unbox o0).Transformed(unbox o1).Info

let res = direct |> Array.findIndex (fun di -> di.Equals(nv))

printfn "(ImageTrafo.%A, ImageTrafo.%A), ImageTrafo.%A" (unbox<ImageTrafo> o0) (unbox<ImageTrafo> o1) (unbox<ImageTrafo> res)

let private composeTable =
Dictionary.ofList [
(ImageTrafo.Identity, ImageTrafo.Identity), ImageTrafo.Identity
(ImageTrafo.Identity, ImageTrafo.Rot90), ImageTrafo.Rot90
(ImageTrafo.Identity, ImageTrafo.Rot180), ImageTrafo.Rot180
(ImageTrafo.Identity, ImageTrafo.Rot270), ImageTrafo.Rot270
(ImageTrafo.Identity, ImageTrafo.MirrorX), ImageTrafo.MirrorX
(ImageTrafo.Identity, ImageTrafo.Transpose), ImageTrafo.Transpose
(ImageTrafo.Identity, ImageTrafo.MirrorY), ImageTrafo.MirrorY
(ImageTrafo.Identity, ImageTrafo.Transverse), ImageTrafo.Transverse
(ImageTrafo.Rot90, ImageTrafo.Identity), ImageTrafo.Rot90
(ImageTrafo.Rot90, ImageTrafo.Rot90), ImageTrafo.Rot180
(ImageTrafo.Rot90, ImageTrafo.Rot180), ImageTrafo.Rot270
(ImageTrafo.Rot90, ImageTrafo.Rot270), ImageTrafo.Identity
(ImageTrafo.Rot90, ImageTrafo.MirrorX), ImageTrafo.Transverse
(ImageTrafo.Rot90, ImageTrafo.Transpose), ImageTrafo.MirrorX
(ImageTrafo.Rot90, ImageTrafo.MirrorY), ImageTrafo.Transpose
(ImageTrafo.Rot90, ImageTrafo.Transverse), ImageTrafo.MirrorY
(ImageTrafo.Rot180, ImageTrafo.Identity), ImageTrafo.Rot180
(ImageTrafo.Rot180, ImageTrafo.Rot90), ImageTrafo.Rot270
(ImageTrafo.Rot180, ImageTrafo.Rot180), ImageTrafo.Identity
(ImageTrafo.Rot180, ImageTrafo.Rot270), ImageTrafo.Rot90
(ImageTrafo.Rot180, ImageTrafo.MirrorX), ImageTrafo.MirrorY
(ImageTrafo.Rot180, ImageTrafo.Transpose), ImageTrafo.Transverse
(ImageTrafo.Rot180, ImageTrafo.MirrorY), ImageTrafo.MirrorX
(ImageTrafo.Rot180, ImageTrafo.Transverse), ImageTrafo.Transpose
(ImageTrafo.Rot270, ImageTrafo.Identity), ImageTrafo.Rot270
(ImageTrafo.Rot270, ImageTrafo.Rot90), ImageTrafo.Identity
(ImageTrafo.Rot270, ImageTrafo.Rot180), ImageTrafo.Rot90
(ImageTrafo.Rot270, ImageTrafo.Rot270), ImageTrafo.Rot180
(ImageTrafo.Rot270, ImageTrafo.MirrorX), ImageTrafo.Transpose
(ImageTrafo.Rot270, ImageTrafo.Transpose), ImageTrafo.MirrorY
(ImageTrafo.Rot270, ImageTrafo.MirrorY), ImageTrafo.Transverse
(ImageTrafo.Rot270, ImageTrafo.Transverse), ImageTrafo.MirrorX
(ImageTrafo.MirrorX, ImageTrafo.Identity), ImageTrafo.MirrorX
(ImageTrafo.MirrorX, ImageTrafo.Rot90), ImageTrafo.Transpose
(ImageTrafo.MirrorX, ImageTrafo.Rot180), ImageTrafo.MirrorY
(ImageTrafo.MirrorX, ImageTrafo.Rot270), ImageTrafo.Transverse
(ImageTrafo.MirrorX, ImageTrafo.MirrorX), ImageTrafo.Identity
(ImageTrafo.MirrorX, ImageTrafo.Transpose), ImageTrafo.Rot90
(ImageTrafo.MirrorX, ImageTrafo.MirrorY), ImageTrafo.Rot180
(ImageTrafo.MirrorX, ImageTrafo.Transverse), ImageTrafo.Rot270
(ImageTrafo.Transpose, ImageTrafo.Identity), ImageTrafo.Transpose
(ImageTrafo.Transpose, ImageTrafo.Rot90), ImageTrafo.MirrorY
(ImageTrafo.Transpose, ImageTrafo.Rot180), ImageTrafo.Transverse
(ImageTrafo.Transpose, ImageTrafo.Rot270), ImageTrafo.MirrorX
(ImageTrafo.Transpose, ImageTrafo.MirrorX), ImageTrafo.Rot270
(ImageTrafo.Transpose, ImageTrafo.Transpose), ImageTrafo.Identity
(ImageTrafo.Transpose, ImageTrafo.MirrorY), ImageTrafo.Rot90
(ImageTrafo.Transpose, ImageTrafo.Transverse), ImageTrafo.Rot180
(ImageTrafo.MirrorY, ImageTrafo.Identity), ImageTrafo.MirrorY
(ImageTrafo.MirrorY, ImageTrafo.Rot90), ImageTrafo.Transverse
(ImageTrafo.MirrorY, ImageTrafo.Rot180), ImageTrafo.MirrorX
(ImageTrafo.MirrorY, ImageTrafo.Rot270), ImageTrafo.Transpose
(ImageTrafo.MirrorY, ImageTrafo.MirrorX), ImageTrafo.Rot180
(ImageTrafo.MirrorY, ImageTrafo.Transpose), ImageTrafo.Rot270
(ImageTrafo.MirrorY, ImageTrafo.MirrorY), ImageTrafo.Identity
(ImageTrafo.MirrorY, ImageTrafo.Transverse), ImageTrafo.Rot90
(ImageTrafo.Transverse, ImageTrafo.Identity), ImageTrafo.Transverse
(ImageTrafo.Transverse, ImageTrafo.Rot90), ImageTrafo.MirrorX
(ImageTrafo.Transverse, ImageTrafo.Rot180), ImageTrafo.Transpose
(ImageTrafo.Transverse, ImageTrafo.Rot270), ImageTrafo.MirrorY
(ImageTrafo.Transverse, ImageTrafo.MirrorX), ImageTrafo.Rot90
(ImageTrafo.Transverse, ImageTrafo.Transpose), ImageTrafo.Rot180
(ImageTrafo.Transverse, ImageTrafo.MirrorY), ImageTrafo.Rot270
(ImageTrafo.Transverse, ImageTrafo.Transverse), ImageTrafo.Identity
]

let private composeTrafo (l : ImageTrafo) (r : ImageTrafo) =
composeTable.[(l,r)]

let private identity =
Map.ofList [
Expand All @@ -155,7 +69,7 @@ module FSharpPixImageCubeExtensions =
let private compose (l : Map<CubeSide, CubeSide * ImageTrafo>) (r : Map<CubeSide, CubeSide * ImageTrafo>) : Map<CubeSide, CubeSide * ImageTrafo> =
l |> Map.map (fun s (ts, lt) ->
match Map.tryFind ts r with
| Some (fs, rt) -> fs, composeTrafo lt rt
| Some (fs, rt) -> fs, ImageTrafo.compose lt rt
| None -> ts, lt
)

Expand Down
Loading

0 comments on commit ceb441a

Please sign in to comment.