Plug-in SDK

Upcoming mother of all image editors

Re: Plug-in SDK

Postby andydansby » Wed Jan 28, 2015 6:29 am

Hello everyone:

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

https://onedrive.live.com/redir?resid=A3FA0A9EDEE237D7%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

Postby andydansby » Sun Mar 29, 2015 9:09 am

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

Postby andydansby » Fri Jul 17, 2015 9:25 am

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

Postby andydansby » Sun Oct 04, 2015 9:18 am

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 564 times


Here is the 32 bit version
circleKuwahara 32 bit.zip
32 bit version of circular Kuwahara
(48.95 KiB) Downloaded 564 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

Postby andydansby » Sat Jan 02, 2016 9:14 am

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 531 times


Here is the 64 bit version
BEEPS 64 bit.zip
64 bit version
(55.97 KiB) Downloaded 501 times


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

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

Postby smmsamm » Mon Jan 18, 2016 3:51 am

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
smmsamm
 
Posts: 320
Joined: Tue Oct 26, 2010 7:58 pm

Re: Plug-in SDK

Postby andydansby » Sat Jan 23, 2016 11:34 am

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]
desert.png
[/img]

Here's the same image running the Stylized plugin along with an edge preserving smooth.
[img]
desert_Final%20w%20smooth.jpg
[/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 454 times


64 bit version
Stylized 64 bit.zip
64 bit version
(55.4 KiB) Downloaded 481 times



Enjoy
Andy Dansby
Attachments
desert.png
original
desert.png (495.91 KiB) Viewed 12723 times
desert_Final w smooth.jpg
with smooth
desert_Final w smooth.jpg (207.62 KiB) Viewed 12723 times
andydansby
 
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Postby andydansby » Wed Feb 17, 2016 5:52 am

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 466 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.
andydansby
 
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

Re: Plug-in SDK

Postby minstrel » Fri Mar 04, 2016 8:40 am

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

All your contributions are greatly appreciated.
minstrel
 
Posts: 51
Joined: Tue Nov 02, 2010 6:41 pm

Re: Plug-in SDK

Postby andydansby » Thu Mar 10, 2016 7:17 am

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
andydansby
 
Posts: 161
Joined: Fri Oct 29, 2010 6:00 am
Location: Syracuse, NY

PreviousNext

Return to Photo Reactor

Who is online

Users browsing this forum: No registered users and 1 guest

cron