Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Commit 3c87bfc

Browse files
authored
Update README.md
1 parent e699580 commit 3c87bfc

File tree

1 file changed

+102
-45
lines changed

1 file changed

+102
-45
lines changed

README.md

Lines changed: 102 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,102 @@
1-
# Winforms Image Processing
2-
3-
An application created in Winforms under C# for processing images. Allows applying various function and convolution filters among other functionalities.
4-
5-
## Version specifications
6-
7-
### Version v1.0
8-
9-
The initial version is specified by the following requirements:
10-
11-
* Loading of a selected image file and displaying it in the application window
12-
* Applying selected filters to the loaded image and displaying result beside
13-
or in place of original image
14-
* Combining multiple filters on top of each other
15-
* Saving result image to a file
16-
* Returning filtered image back to its original state without reloading the
17-
file
18-
* Implementation of following function filters - with fixed parameters easily
19-
modifiable from the source code:
20-
* inversion,
21-
* brightness correction,
22-
* contrast enhancement,
23-
* gamma correction.
24-
* Implementation of following convolution filters
25-
* box blur,
26-
* Gaussian blur
27-
* sharpen,
28-
* edge detection
29-
* emboss
30-
31-
Additionally, functionalities of convolution filters are extended by:
32-
33-
* Separate area displaying rectangular grid with editable convolution filter
34-
kernel coefficients
35-
* Independent selection of numbers of kernel columns and rows. Values can
36-
be limited to an odd numbers from range [1, 9]
37-
* Editable field with filter divisor
38-
* Option to automatically compute divisor (sum of coefficients or 1 if the
39-
sum is 0)
40-
* Editable field with filter offset value
41-
* Selection of kernel anchor point, i.e. element of a grid which overlaps with
42-
currently processed pixel
43-
* Loading and editing existing filters, including predefined convolution filters specified in the common part
44-
* Saving created or modified filters in an application and applying them to
45-
the image
1+
# Image processing in C# Winforms
2+
3+
This project aims to recreat various image/bitmap processing methods and algorithms in a C# Winforms environment.
4+
5+
## Image processing features
6+
7+
The following options are available for image processing.
8+
9+
### Image processor window
10+
11+
* Displays the original and modified image side by side
12+
* You can directly copy from the modified image context menu
13+
* You can select the image view mode from "fit" and "view original size"
14+
15+
<p align="center">
16+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/1.png">
17+
</p>
18+
19+
### Filters
20+
21+
* You can apply a wide variety of functional as well as convolution filters
22+
* You can add as many layers as you like
23+
* Order of applying filters is taken into account
24+
* A caching system stores each bitmap for a given order of filter layers
25+
26+
<p align="center">
27+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/2.png">
28+
</p>
29+
30+
### Custom convolution kernel
31+
32+
* Adds a custom kernel to the filters list
33+
* You can edit the kernel setup in a the Edit Kernel window
34+
* You can choose row and column count, kernel divisor (by default set automatically to sum of all cells), value offset and anchor point (wrt. applied cell)
35+
36+
<p align="center">
37+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/3.png">
38+
</p>
39+
40+
### Filter options window
41+
42+
* Changes the values used in certain filters
43+
* Reapplies all current layers
44+
45+
<p align="center">
46+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/4.png">
47+
</p>
48+
49+
### YCbCr colorspace split
50+
51+
* Displays the current (modified) image [YCbCr colorspace](https://en.wikipedia.org/wiki/YCbCr) split
52+
53+
<p align="center">
54+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/5.png">
55+
</p>
56+
57+
## Bitmap creation features
58+
59+
The following options are available for bitmap creation (accessible via the Drawing window)
60+
61+
### Drawing window
62+
63+
* A seperate window for all your bitmap creation needs
64+
* Allows saving and opening states (stored in serialized binary files)
65+
66+
<p align="center">
67+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/6.png">
68+
</p>
69+
70+
### Shapes
71+
72+
* Various shapes can be created simply by clicking
73+
* These are vector object shapes, stored and treated as objects (ie. circle has an origin point and a radius)
74+
* All shapes can be moved, redrawn or removed in the shapes menu (color and thickness taken into account while redrawing)
75+
* Polygons may be clipped
76+
77+
<p align="center">
78+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/7.png">
79+
</p>
80+
81+
### Additional setup
82+
83+
* Background color may be changed
84+
* Anti-aliasing may be turned on and off for shapes using midpoint lines
85+
* The clipping boundary may be displayed
86+
87+
<p align="center">
88+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/8.png">
89+
</p>
90+
91+
### Filling
92+
93+
* Point-based flood fill is available (and stored as separate object)
94+
* Polygons may be filled with specific colors or tiled images
95+
96+
<p align="center">
97+
<img src="https://raw.githubusercontent.com/julzerinos/csharp-image-processing/assets/9.png">
98+
</p>
99+
100+
## Final note
101+
102+
If for some darn reason good ol' Microsoft Paint ain't satisfying all your image dillydallying needs, head on down to Joe's Peppercot Farms n' try out that dandy release in the right-as-the-Lord-himself -hand menu. God bless 🤠

0 commit comments

Comments
 (0)