diff --git a/CHANGELOG.md b/CHANGELOG.md index 2de91c8..4c91dc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,12 @@ # Changelog - All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.0.0] - 2023-09-16 +## [Unreleased] ### Added - Implemented image rotation on the CPU, three new CPU filters, enabled console control over image processing parameters. (https://github.com/PolinaSavelyeva/ImageProcessing/pull/1) - Implemented image processing agents for sets of images, supporting sequential and parallel options. (https://github.com/PolinaSavelyeva/ImageProcessing/pull/3) - Implemented GPU kernels for image rotations and reflections, standardized agent functionality for CPU and GPU, and added a logging agent for event tracking.(https://github.com/PolinaSavelyeva/ImageProcessing/pull/4) -[Unreleased]: https://github.com/PolinaSavelyeva/ImageProcessing/compare/v1.0.0...HEAD -[1.0.0]: https://github.com/PolinaSavelyeva/ImageProcessing/releases/tag/v1.0.0 diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_Agents.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_Agents.html index ddbe93f..81d5473 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_Agents.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_Agents.html @@ -179,7 +179,7 @@

/Users/sv  0117    MailboxProcessor.Start initial - +

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_ArguCommands.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_ArguCommands.html index 6711d5e..6a0d075 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_ArguCommands.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_ArguCommands.html @@ -82,7 +82,7 @@

/Us  037            | Transformations _ -> "List of available transformations." -

+

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_CLI.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_CLI.html index 4a05a91..96a2d4b 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_CLI.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_CLI.html @@ -85,7 +85,7 @@

/Users/svmen  040        0 -

+

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_CPU.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_CPU.html index 29d5351..48bdf5d 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_CPU.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_CPU.html @@ -17,11 +17,11 @@

< Summary

Class:ImageProcessing.CPU Assembly:ImageProcessing.PolinaSavelyeva File(s):/Users/svmena/Documents/ImageProcessing/src/ImageProcessing/CPU.fs -Covered lines:29 +Covered lines:27 Uncovered lines:0 -Coverable lines:29 +Coverable lines:27 Total lines:73 -Line coverage:100% (29 of 29) +Line coverage:100% (27 of 27) Covered branches:24 Total branches:28 Branch coverage:85.7% (24 of 28) @@ -35,7 +35,7 @@

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage applyFilter(...)0%110100% -Invoke(...)100%9964100% +pixelProcessing@16(...)100%9964100% Invoke(...)0%110100% Invoke(...)0%110100% rotate(...)77.78%5516100% @@ -64,20 +64,20 @@

/Users/svmen  15  16    let pixelProcessing p =  17 - 147603418        let pw = p % image.Width - 147603419        let ph = p / image.Width + 149191618        let pw = p % image.Width + 149191619        let ph = p / image.Width  20 - 147603421        let dataToHandle = - 792748622            [| for i in ph - filterDiameter .. ph + filterDiameter do - 2380579623                   for j in pw - filterDiameter .. pw + filterDiameter do - 6055520324                       if i < 0 || i >= image.Height || j < 0 || j >= image.Width then - 153160425                           float32 image.Data[p] - 147603426                       else - 1325207427                           float32 image.Data[i * image.Width + j] |]21        let dataToHandle = + 654126022            [| for i in ph - filterDiameter .. ph + filterDiameter do + 2278994423                   for j in pw - filterDiameter .. pw + filterDiameter do + 6049863824                       if i < 0 || i >= image.Height || j < 0 || j >= image.Width then + 6369225                           float32 image.Data[p]26                       else + 1205396827                           float32 image.Data[i * image.Width + j] |]  28 - 1330764429        Array.fold2 (fun acc x y -> acc + x * y) 0.0f filter dataToHandle + 1360957629        Array.fold2 (fun acc x y -> acc + x * y) 0.0f filter dataToHandle  30 - 147605831    MyImage(Array.mapi (fun p _ -> byte (pixelProcessing p)) image.Data, image.Width, image.Height, image.Name) + 149194031    MyImage(Array.mapi (fun p _ -> byte (pixelProcessing p)) image.Data, image.Width, image.Height, image.Name)  32  33/// <summary>  34/// Rotates an input image either clockwise or counterclockwise @@ -90,13 +90,13 @@

/Users/svmen  82041    let buffer = Array.zeroCreate (image.Width * image.Height)  82042    let weight = System.Convert.ToInt32 isClockwise  43 - 6281544    for j in 0 .. image.Width - 1 do - 7781722945        for i in 0 .. image.Height - 1 do + 6423044    for j in 0 .. image.Width - 1 do + 7806772745        for i in 0 .. image.Height - 1 do  46 - 7775523447            let pw = j * weight + (image.Width - 1 - j) * (1 - weight) - 7775523448            let ph = i * (1 - weight) + (image.Height - 1 - i) * weight + 7800431747            let pw = j * weight + (image.Width - 1 - j) * (1 - weight) + 7800431748            let ph = i * (1 - weight) + (image.Height - 1 - i) * weight  49 - 7775523450            buffer[ph + pw * image.Height] <- image.Data[j + i * image.Width] + 7800431750            buffer[ph + pw * image.Height] <- image.Data[j + i * image.Width]  51  82052    MyImage(buffer, image.Height, image.Width, image.Name)  53 @@ -111,23 +111,23 @@

/Users/svmen  41662    let buffer = Array.zeroCreate (image.Height * image.Width)  41663    let weight = System.Convert.ToInt32 isVertical  64 - 2513865    for j in 0 .. image.Width - 1 do - 234944066        for i in 0 .. image.Height - 1 do + 2443265    for j in 0 .. image.Width - 1 do + 225104466        for i in 0 .. image.Height - 1 do  67 - 232471868            let pw = (image.Width - j - 1) * weight + j * (1 - weight) - 232471869            let ph = i * weight + (image.Height - i - 1) * (1 - weight) + 222702868            let pw = (image.Width - j - 1) * weight + j * (1 - weight) + 222702869            let ph = i * weight + (image.Height - i - 1) * (1 - weight)  70 - 232471871            buffer[pw + ph * image.Width] <- image.Data[j + i * image.Width] + 222702871            buffer[pw + ph * image.Width] <- image.Data[j + i * image.Width]  72  41673    MyImage(buffer, image.Width, image.Height, image.Name) -

+

Methods/Properties

applyFilter(System.Single[0...,0...],ImageProcessing.MyImage/MyImage)
-Invoke(System.Int32)
+pixelProcessing@16(ImageProcessing.MyImage/MyImage,System.Int32,System.Single[],System.Int32)
Invoke(System.Single,System.Single,System.Single)
Invoke(System.Int32,System.Byte)
rotate(System.Boolean,ImageProcessing.MyImage/MyImage)
diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_GPU.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_GPU.html index 4ffb058..bb46c7f 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_GPU.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_GPU.html @@ -291,7 +291,7 @@

/Users/svmen  12231        MyImage.MyImage(result, image.Width, image.Height, image.Name) -

+

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_Helper.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_Helper.html index 6dae1ea..6b9fd34 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_Helper.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_Helper.html @@ -35,7 +35,7 @@

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage toFlatArray(...)0%110100% -GenerateNext(...)100%884100% +GenerateNext(...)100%884100% generatePath(...)0%2100% @@ -53,9 +53,9 @@

/Users/sv  7/// <returns>A 1D array containing all the elements of the input 2D array</returns>  8let toFlatArray array2D =  489    seq { - 25210        for x in [ 0 .. (Array2D.length1 array2D) - 1 ] do - 74011            for y in [ 0 .. (Array2D.length2 array2D) - 1 ] do - 41612                yield array2D[x, y] + 25610        for x in [ 0 .. (Array2D.length1 array2D) - 1 ] do + 78411            for y in [ 0 .. (Array2D.length2 array2D) - 1 ] do + 44812                yield array2D[x, y]  4813    }  4814    |> Array.ofSeq  15 @@ -69,7 +69,7 @@

/Users/sv  023    System.IO.Path.Combine(outputDirectory, imageName) -

+

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_Kernels.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_Kernels.html index 2f9ad17..5b07bfe 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_Kernels.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_Kernels.html @@ -75,7 +75,7 @@

/Users/s  31    array2D [ [ 0; -1; 0 ]; [ -1; 5; -1 ]; [ 0; -1; -0 ] ] |> Array2D.map float32 -

+

Methods/Properties

diff --git a/docs/coverage/ImageProcessing.PolinaSavelyeva_MyImage.html b/docs/coverage/ImageProcessing.PolinaSavelyeva_MyImage.html index 1585535..0c5209c 100644 --- a/docs/coverage/ImageProcessing.PolinaSavelyeva_MyImage.html +++ b/docs/coverage/ImageProcessing.PolinaSavelyeva_MyImage.html @@ -18,10 +18,10 @@

< Summary

Assembly:ImageProcessing.PolinaSavelyeva File(s):/Users/svmena/Documents/ImageProcessing/src/ImageProcessing/MyImage.fs Covered lines:8 -Uncovered lines:2 -Coverable lines:10 +Uncovered lines:1 +Coverable lines:9 Total lines:42 -Line coverage:80% (8 of 10) +Line coverage:88.8% (8 of 9) Covered branches:0 Total branches:0 Covered methods:2 @@ -35,7 +35,7 @@

Metrics

.ctor(...)0%110100% load(...)0%110100% -save(...)0%2100% +save(...)0%2100%

File(s)

@@ -82,18 +82,18 @@

/Users/s  37/// <param name="filePath">Path to the directory where the image will be saved</param>  38let save (image: MyImage) filePath =  39 - 040    let image = Image.LoadPixelData<L8>(image.Data, image.Width, image.Height)40    let image = Image.LoadPixelData<L8>(image.Data, image.Width, image.Height)  41  042    image.Save filePath -

+