Author |
Topic |
Uwe
284 Posts |
Posted - Oct 16 2015 : 17:01:10
|
Nigel, Alpha Controls always supported skinning for ImageEn. I've been using them for many years without problems.
-Uwe |
|
|
spetric
Croatia
308 Posts |
Posted - Nov 11 2015 : 17:07:20
|
Regarding statistical color correction by @rmklever;. I have implemented Roy's code in C++ with two more options: collect statistical data from given rectangular region(s) and collect data from selection mask(s). Instead of collecting data only from the whole images user have additional options to collect data from rectangular region or from selection masks. Those options are not so hard to implement and results are very nice.
I've put some examples on my FB page: https://www.facebook.com/Pixopedia/
|
|
|
xequte
38654 Posts |
|
xequte
38654 Posts |
|
rmklever
Norway
51 Posts |
Posted - Dec 29 2015 : 20:09:33
|
Picture Color EQ Delphi 2010, Source code and exe demo :) by Roy Magne Klever
Download: www.imageen.com/files/other/coloreq.zip
I was testing an idea I had and it turned out to be quite useful, at least for me. Hope you find it interesting and useful too.
Roy M Klever Klever on Delphi - www.rmklever.com
|
|
|
wesleybobato
Brazil
367 Posts |
|
wesleybobato
Brazil
367 Posts |
Posted - Jan 11 2016 : 12:39:12
|
Hello Roy
Color Picture EQ
It is Possible to delete the Selected Color, Using Transparency, Through Alpha Channels?
Thank you so much. |
|
|
spetric
Croatia
308 Posts |
Posted - Jan 15 2016 : 16:10:00
|
Here is a demo on how to use SpHost library (8bf filters). SpHost is small 94k library and it executes 8bf plugins (filters). Library must be included in your project. Not all filters will work! Complete source code (both demo and SpHost) is inside zip. Demo is provided with few freeware filters.
Usage: Load plugins, open image, press Execute.
attach/spetric/201611516543_ien_sp_host.zip 6419.21 KB
Note: some filters require plugin.dll which can be downloaded from the net. |
|
|
wesleybobato
Brazil
367 Posts |
Posted - Jan 15 2016 : 16:57:18
|
Hello Siniša.
Thank you for sharing.
have a great day. |
|
|
spetric
Croatia
308 Posts |
Posted - Jan 15 2016 : 17:05:42
|
Note that header files are from old PS SDK. If you want to make your own host plug-in you should download the newest SDK version. |
|
|
wesleybobato
Brazil
367 Posts |
Posted - Jan 15 2016 : 17:29:40
|
Again thank you for your information.
a great day. |
|
|
spetric
Croatia
308 Posts |
|
spetric
Croatia
308 Posts |
Posted - Feb 10 2016 : 06:21:32
|
Ellipse rotation:
Draw ellipse and rotate it. Ellipse is created from polyline points calculated in grapEllipse object.
Parameters: Resolution - higher the number, less points are used to construct final polyline. Rotation trackbar - obvious
Exe and source: attach/spetric/201621062035_rotate_ellipse.zip 3023.94 KB
More "fancy schmancy" approach would be to check if ctrl or shift button is pressed (in OnMouseMove event) and to rotate ellipse using mouse.
Note: when resolution is set to small number, rotated ellipse is little bit jagged. |
|
|
xequte
38654 Posts |
Posted - Feb 10 2016 : 15:33:01
|
Hi Sinisa
Nice work with the inpaint project; I had fun playing with this one. I look forward to seeing it develop further.
You might want to add some hover hints as there are many options to work with.
Nigel Xequte Software www.xequte.com nigel@xequte.com
|
|
|
mastinf
Italy
33 Posts |
|
spetric
Croatia
308 Posts |
Posted - Feb 11 2016 : 15:46:50
|
Besides midpoint, I have implemented another algorithm (trigonometric/general ellipse), so you can switch between those two algorithms in any time to see the difference. With trigonometric/ general ellipse method, polyline is less jagged, because of floating point (double) calculation of output points. If there is an interest, I can upload the updated version.
Siniša |
|
|
spetric
Croatia
308 Posts |
Posted - Feb 15 2016 : 08:13:27
|
I was experimenting with image energy and min-energy seams and this came out as a by-product. Original article: http://perso.crans.org/frenoy/matlab2012/seamcarving.pdf
Seam carving (content aware scaling).
original image:
scaled (by x):
Exe and source code:
attach/spetric/20162158835_seam_carving.zip 2992.39 KB
Note1: I put black pixels on image border after scaling, however, real stuff is to use alpha channel and fill with zeros. Note2: seam carver class is threaded. Note3: There is no backward scaling, because it requires rescaling from beginning, or saving seams into some undo buffer (index maps in article). Note4: enlarging image is not implemented, (it actually should add seams and fill it with average pixel value left+right/2 in case of horizontal scaling). Note5: There is no object protection, but it's not hard to implement:we can put a high energy value for pixels in selection mask. Note6: To force object removal, we put negative energy values for pixels in selection mask. Note7: To preprocess seams indexing, as suggested by article, we can use idle time in application, and start a thread immediately after image is loaded to create index maps. |
|
|
xequte
38654 Posts |
Posted - Feb 15 2016 : 17:30:38
|
Wow, it's impressive how much the seam can be reduced without noticably affecting the subject.
Nigel Xequte Software www.xequte.com nigel@xequte.com
|
|
|
spetric
Croatia
308 Posts |
Posted - Feb 17 2016 : 16:12:26
|
Yes, very cool algorithm, but a little bit slow. There are some modifications that trades precision vs. speed.
Original algorithm removes seam by seam, but there are some implementations that calculate all possible 0 connected min seams on original image and then perform seam removal (this is also suggested in article's appendix).
I have modified prog. a bit (there were also some bugs in energy calculation) and created separate threads for horizontal and vertical seams calculation without removal. Threads are collecting seams and real removal (and restore) is much faster.
However, I have a problem when there is simultaneous horizontal and vertical resizing...I need to create a new map to resolve vertical/horizontal seams crossing. I'll also try an approach with 0 connected seams. |
|
|
w2m
USA
1990 Posts |
Posted - Mar 21 2016 : 10:41:50
|
TIEFileDragDrop To TImageEnMView Demo by William Miller/Adirondack Full Source Compiled with Delphi Seattle, but is expected to compile with Delphi 2010 or higher. Price: Free
The TIEFileDragDrop To TImageEnMView Demo shows how to drag and drop images from the windows shell (File Explorer) to TImageEnMView.
TIEFileDragDrop is not documented for use with TImageEnMView so a brief overview is shown below:
Create a AFileDrop: TIEFileDragDrop; declaration.
AFileDrop: TIEFileDragDrop; Create a TIEFileDragDrop class in FormCreate:AFileDrop := TIEFileDragDrop.Create(ImageEnMView1, DropFiles);
Create a Private declaration DropFiles method procedure DropFiles(Sender: TObject; ssFiles: TStrings; dwEffect: Integer);
Do not explicitly free the AFileDrop object so register a expected memory leak in FormCreate: RegisterExpectedMemoryLeak(AFileDrop);
Activate dropping in FormCreate: AFileDrop.ActivateDropping := True;
Download: attach/w2m/2016321105225_TIEFileDragDrop.zip 122.91 KB
Note: Some exception logging Delphi add on's like EurekaLog may show a memory leak even after registering the memory leak, but this is a false positive according to the developers of ImageEn:
"It is best to the let the application handle the freeing of TIEFileDragDrop. Of course then you will get a warning from your memory management tool so you need to register the expected leak (not that it is actually a leak. The object exists for the time of the application and is destroyed when the owner is destroyed).", Nigel Cross
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
|
|
Topic |
|