Plug-in SDK

Upcoming mother of all image editors
andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

Hello everyone:

I have posed an update of my Intermediate Image processing guide. The link is:

https://onedrive.live.com/redir?resid=A ... 7D7%213225

What is new is a problem that has been bugging me for a long while (too embarrassed to say how long of a while); The Accumulator Blur. Not really a ground breaking effect, as it is nothing more than a box blur, however it is quite a speed improvement over the separable box blur and the speed seems to be consistent now matter how large the blur radius. The code to get it operational is now in my guide and I will be using this technique to try to improve the speed of some of my other types of operation.

If anyone wants to try their hand at programming for Photo-Reactor. The intermediate image processing guide (as well as the beginning image processing guide and the SDK guide) is a good way to start. It takes a little patience, but can be rewarding.

Take care
Andy Dansby

1-31-15
Posted another routine on the Intermediate image processing guide. The Iterative Accumulator Blur, with 1 iteration; Box blur, 2 iterations; Triangle blur, 3 iterations; Gaussian Blur.

and later on

Now have the code for Surface Blur included.
enjoy

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

Hello everyone:

I have posed an update of my Intermediate Image processing guide. The link is:

https://onedrive.live.com/redir?resid=A ... 7D7%213225

I have updated the guide to include a recursive Gaussian blur based on Rachid Deriche work. It is a fast Gaussian blur.

Also, don't forget that plugins (single input) that are written for Photo-Reactor can be used with the new DPHDR.

The Guide is at 126 pages of mainly code. There are no restriction on reusing any of my code, my hope is that it will be helpful to someone out there.

Andy Dansby

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

I've been busy as of late with new job etc... However, I did want to post a bit of code I have been working on. This is open source stuff and for an algorithm I have been working on. This is for a Kth selection algorithm for finding the median of a list of floating point numbers.

As some might be aware, one of the most famous Kth selection routines is Quick Select. The originator of this algorithm is Tony Hoare. It was optimized by Niklaus Wirth. It was again optimized by Robert Floyd and Ronald Rivest to what is known as one of the Fastest Selection routines available. Lefteris Stamatogiannakis produced an even faster version of the Wirth routine (known as Lefselect) that was even faster than Robert Floyd's routine.

My routine is faster than all of those (though it might not be that fastest yet), however mine is open source and available to use for anything.

Of course for Vanity's sake I'll name it after myself :mrgreen:

Here's the code

Code: Select all

 	float Dansby_kth(float array[], const unsigned int length, const unsigned int kTHvalue) 
	{
#define F_SWAP(a,b) { float temp=(a);(a)=(b);(b)=temp; }

		unsigned int left = 0;
		unsigned int left2 = 0;
		unsigned int right = length - 1;
		unsigned int right2 = length - 1;
		unsigned int kthPlus =  kTHvalue;
		unsigned int kthMinus = kTHvalue;
		
		while (right > left)
		{
			//Median of 3 optimization
			if( array[right] < array[left] ) F_SWAP(array[left],array[right]);
			if( array[right] < array[kTHvalue] ) F_SWAP(array[kTHvalue],array[right]);
			if( array[kTHvalue] < array[left] ) F_SWAP(array[left],array[kTHvalue]);
			//Median of 3 optimization

			const float temp = array[kTHvalue];//this is pivot

			kthPlus = kTHvalue + 1;
			kthMinus = kTHvalue - 1;

			while ((right2 > kTHvalue) && (left2 < kTHvalue))
			{
				do 
				{
					left2++;
				}while (array[left2] < temp);

				do
				{
					right2--;
				}while (array[right2] > temp);

				F_SWAP(array[left2],array[right2]);
			}
			left2++;
			right2--;
 
			if (right2 < kthMinus) 
			{
				while (array[left2] < temp)
				{
					left2++;
				}
				left = left2;
				right2 = right;
				kthMinus --;
			}
			else
			if (kthPlus < left2) 
			{
				while (array[right2] > temp)
				{
					right2--;
				}
				right = right2;
				left2 = left;
				kthPlus ++;
			}
			else
			if( array[left] < array[right] )
			{
				F_SWAP(array[right],array[left]);
			}

			
			
		}

#undef F_SWAP
		return array[kTHvalue];
	}

to call the routine, you will need to keep track of the number of elements in the array. The middle element variable just points to the center of the list.

Code: Select all

//points to the center value (median)
				int middleElement = elementsinarray / 2;

				Dansby_kth(redArray, elementsinarray,middleElement);
				Dansby_kth(greenArray, elementsinarray,middleElement);
				Dansby_kth(blueArray, elementsinarray,middleElement);

Any other optimization enhancements, just post.

Enjoy
Andy Dansby

7-18-15 edited the code to remove if (rightleft < kTHvalue) as the code performed better without it.

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

I found this plugin that I had coded but never posted. It is similar to the Kuwahara plugin, but this one uses a circular kernel. The end results are abstract especially at a higher kernel radius.

Here is the 64 bit version
circleKuwahara 64 bit.zip
64 bit version of circular Kuwahara
(53.88 KiB) Downloaded 618 times
Here is the 32 bit version
circleKuwahara 32 bit.zip
32 bit version of circular Kuwahara
(48.95 KiB) Downloaded 609 times
Enjoy
Andy Dansby

ps. Now that fall time and upcoming winter is here. I plan on being more active. Especially when it comes to the image processing guides.

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

Merry Christmas and happy New Year to everyone. As a belated Christmas gift to all who use Photo Reactor and Dynamic Photo HDR ver 6. I have a new plugin BEEPS. Which is a Bi-Exponential Edge Preserving Smoother.

This plugin is yet another bilateral type filter which runs in almost real time. It works wonderfully with the Detailer plugin to really bring out contrast and sharpening in images.

This plugin works with PhotoReactor and DPHDR Ver 6. Just place in your plugin directory.

As always I will publish the source code.

Here is the 32 bit version
BEEPS 32 bit.zip
32 bit version
(61.09 KiB) Downloaded 579 times
Here is the 64 bit version
BEEPS 64 bit.zip
64 bit version
(55.97 KiB) Downloaded 554 times
Enjoy
Andy Dansby

smmsamm
Posts: 321
Joined: Tue Oct 26, 2010 7:58 pm

Re: Plug-in SDK [andydansby] [Neural Networks Effect]

Post by smmsamm »

andydansby wrote:I am now posting my next 3rd party plugin for the upcoming Photo Reactor -- Sepia
Sepia.zip
There is 1 standard Sepia matrix commonly found which is the first choice, but playing with the numbers, there are a number of different Sepia matrix's that can be used. As usual, I probably went overboard. I am also including 5 types of Cyanotype for a total of 11 different filters.


enjoy
andy dansby
dera andydansby, You are master in plugin generator,
Do you think is it possible to make a kind of Neural Networks Effect with SDK,
Something like http://www.pikazoapp.com/ , May be some Tips for making.
http://deeplearning.net/tutorial/lenet.html

Thank you

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

Now for something completely different.

A stylized plugin. Used with a edge preserving smooth, takes an image and creates a cartoon like stylized image.

Here's the original image
[img]
original
original
desert.png (495.91 KiB) Viewed 13849 times
[/img]

Here's the same image running the Stylized plugin along with an edge preserving smooth.
[img]
with smooth
with smooth
desert_Final w smooth.jpg (207.62 KiB) Viewed 13849 times
[/img]

For best results, use a small color difference setting on the edge preserving smooth and vary the results with the radius.

note: on some of my plugins use the lambda / sigma for color difference, use a small lambda/sigma

Here are the plugins
32 bit version
Stylized 32 bit.zip
32 bit version
(50.79 KiB) Downloaded 505 times
64 bit version
Stylized 64 bit.zip
64 bit version
(55.4 KiB) Downloaded 541 times

Enjoy
Andy Dansby

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

Found a bug in the 64 bit version of Domain Transform. I repaired the bug.

Simply replace your current version of Domain Transform with this one.
domain transform.zip
64 bit version
(66.37 KiB) Downloaded 523 times
enjoy

Andy Dansby


ps,
I've got a few plugins in the works, a replacement for my detailer plugin and a pencil sketch plugin. On a bit more of an analysis side of things, I hope to program a gaussian and laplacian pyramid type plugin, though that is still in the air. Not that it will produce a good flow by itself, however it could be the beginnings of image analysis for other type plugins.

I am not however planning to produce a neural network artwork type plugin. Research on this subject shows that it is fairly complex and takes quite some time to produce an output image(over an hour at least). To produce such a plugin, three variables need to happen, a faster output (less than 30 seconds for preview and less than 2 minutes on output), someone to produce a reasonable routine for me to link to in C/C++ and for me to understand the complexities of the math involved :oops: . Finally, I would need to find the time in my busy schedule, as I have family & job that keep me busy. I am certainly not a professional programmer. I am a phone technician who travels making repairs and installing and installing networks. I do programming to keep my brain active and keep in a logical state of mind.

minstrel
Posts: 50
Joined: Tue Nov 02, 2010 6:41 pm

Re: Plug-in SDK

Post by minstrel »

...just a quick thank you, Mr. AndyDansby!

All your contributions are greatly appreciated.

andydansby
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Post by andydansby »

minstrel wrote:...just a quick thank you, Mr. AndyDansby!

All your contributions are greatly appreciated.
You're welcome minstrel. I appreciate that.

I do have some additional news, I have now created a github account and am posting my routines publicly for all.

My GitHub page https://github.com/andydansby?tab=repositories

I will eventually place all of my various projects here. Obviously any optimizations / improvements are welcome. All of my codes are open source, feel free to use them for anything you like, just be sure to give credit.

Andy Dansby

Post Reply