Welcome to the Sagelight Editor Blog

This blog is for things currently happening in Sagelight.

Useful links

Homepage: www.sagelighteditor.com

My direct e-mail: rob@sagelighteditor.com

Direct link to the free 30-day trial: www.sagelighteditor.com/install_trial.exe (22  megs, All Windows versions).

Sagelight Editor Facebook Page An informal place to post your pictures, thoughts, and ask questions.  It was just set up — please “like” it so it can get it’s own username.

Youtube Page (with video tutorials — can be accessed on the discussion board, too): http://www.youtube.com/sagelighteditor

Current Sale:

The $39.95 (lifetime version) sale is coming to a close, ending around the 1st of January. Sagelight is currently being split into a Standard and Enthusiast/Pro version.  The current version is the Enthusiast/Pro version, though the current pricing reflects the standard version.  Once the split is complete, the Enthusiast/Pro version will be $79.95.

LanczosResize.exe – a free program

resizegraphic

LancsozeResize.exe – A prototype for an Image Processing Library Package

In the development of the CinepanPlayer, I needed a resize function to resize the images, and I used the multi-CPU 192-bit Lanzcos Resize function I wrote for Sagelight.

Since this resize (in the Cinepan Player) is done on fairly large images at run-time, I needed something fast, so I borrowed the code I wrote in SSE assembly language from Sagelight.

Since I made it a generic class for the Cinepan Player, I wrote a sample LanczosResize.exe which anyone can use.

It’s a command-line program that will take your JPEG image, resize it to the dimensions you specify in the Lanczos Algorithm you choose.  It will then write out a new JPEG with the new dimensions in the JPEG Quality desired (or the default quality of 80).

More about how to use it a couple sections down

A prototype/beta for an Image Processing Library Package

For a while, I have been thinking about releasing an Image Processing Library Package that you can use on the command line, or, perhaps, calling it from your program as a .DLL.

Sagelight has a number of fast, multi-processing, intensive algorithms that are very useful, and the Lanczos resize is just one of them.  I thought I’d put out LanczosResize.exe as a prototype and see what people think.

There are many other functions such a package could perform, such as Gaussian Blur, Unsharp Mask, Definiton, Focus, 13 different types of Saturation, Vibrance, Curves (i.e. specify the curve points and color space), Color Space conversion, other resizing methods, fill light, noise reduction, edge detection, various analyses, HDR, Lens Blur, Box Blur, Median, Surface Blur, Contrast (various methods), Brightness, Gamma, image merging (i.e. Linear, Soft Light, Color, etc.), and so-forth.

Most of these items are very useful for professional projects and image analysis, as well as hobbyists looking to perform functions on their images for various reasons – for example, a quick Gaussian Blur or Noise Reduction prior to an HDR pass, and that sort of thing.

With a robust library, putting functions together can do amazing things to the image, too.

It’s just a thought, and I thought I’d release the Lanczos resize to see what people think and to get feedback.

Using Lanczos Resize

Since it’s a prototype of a possible larger program, the options are pretty simple:

LanczosResize <inputfile> <outputfile> –L<LanczosType> –Size <WidthxHeight>/<%NewSize> [-quality <JpegQuality>]

Where:

  • InputFile = your input file, such as MyJpeg.jpg (must be a JPEG image)
  • OutputFile = your outputfile, such as MyNewJpeg.jpg.
  • LanczosType = 2,3,5, or 8.
  • Size. This can be <width>x<height> (such as 1024×768) or a percent value, such as 50% (or 43.145% for better accuracy).  Using a percent value maintains the aspect ratio of the image, where using widthxheight creates an image of exactly those dimensions.
  • Quality.  This is optional and specifies the output jpeg quality, and is a number from 1-100.  100 is the best quality (and highest file size).  Default quality is 80, which is a good high-quality output.

Examples:

  • LanczosResize MyFile.jpg MyFile2.jpg –l5 –size 40.3%. Resizes MyFile.jpg to 40.3% with Lanczos 5, and writes this image out to MyFile2.jpg (with default Image Quality 80).
  • LanzcosResize MyFile.jpg MyFile2.jpg –l3 –size 1024×768 –quality 30. Resizes MyFile.jpg to exact dimensions 1024x.768 with Lanczos 3, writing the output to MyFile2.jpg with specified JPEG Quality 30%.

About the Lanczos Resize Algorithm

The Lanczos Resize algorithm is a multi-CPU algorithm that resizes your image in 192-bit floating point.   It runs very fast and is one of its nice features.

About Lanczos Types

Different Lanczos Types are great for different things:

  • Lanczos 2.  This is a good general resizing option.  It is more like a bilinear resize and can avoid edges and artifacts.
  • Lanczos 3.  Lanczos 3 is a sharp resizing, and is the best option for downsizing images.  It keeps sharp and avoid artifacting.
  • Lanczos 5.  Lanczos 5 is even sharper than Lanczos 3, and is the best option (imho) for making an image larger.  Using Lanczos 5 to make images smaller is also a great option, and will create very sharp images; however, you may see some artifacts.
  • Lanczos 8.  Lanczos 8 is a great option, too.  It is sharper than Lanzcos 5, and is great at keeping small details that even Lanczos 3 or 5 might miss.  However, watch for “ringing” artifacts/ghosting with Lanczos 8.

JPEG Quality

The Jpeg Quality of the resizing is set to the highest quality, 4x4x4.  This creates slightly larger files, but keep the color fidelity and definition very high.  Most image editors, for example, tend to use 4x2x2, which does reduce details.

Download LanczosResize.Exe

LanczosResize may be found at www.sagelighteditor.com/LanczosResize.exe and is about 400k in size.

It runs on Windows in Console mode and may be used in batch files for resizing.

License.

LanczosResize.exe is free to use for non-commercial purposes and may not be included or used as part of any distributed program.  It is for personal use only.

If you wish to use it for professional uses, or in a distributed package, write me at rob@sagelighteditor.com

Warranty.

There is no warranty.  It is a free program with no promises, as with all free programs.  I have tested it and it runs great on my system.

Conclusion

As mentioned, LanczosResize is a prototype and a test for a larger set of available functions I am looking at releasing; perhaps as a hybrid of free functions for personal use, and something with a licensing fee for professional/distribution usage.

I’m also looking at the idea of distributing free programs and making income solely on donations. Let me know what you think about that, too.

A Programmer’s Blog Entry

I thought I’d write a little about programming today.  Usually, I use the blog for announcements and such, but maybe expanding a little will be a good thing.  Let me know what you think.

I was going to post this on the discussion board, but I thought it might be of more general interest to discuss some programming topics.  So, I am posting it here (it automatically gets sent to the discussion board, too).

Some thoughts on Sagelight and Programming

There have been a few general discussions on the discussion board (www.sagelightforum.com) about computer programming and Sagelight, and I thought I’d discuss a few things here.

It’s an interesting concept, especially for such a large program consisting of well over 800,000 lines of code, 2500 little graphic icons, and years of hard work.

A decided to write on a few topics after finishing the Cinepan Player.  This is because the Cinepan Player is a much smaller project than Sagelight, and as a fairly large program that is also a discrete piece of code, it really showed me a few things that I’ve learned with Sagelight and that could be great for discussion.

I Learned a Lot More Than I Expected Writing Sagelight

When I started Sagelight, I had already had a long career in being a consultant, programming on various projects.  I have a great reputation for being able to solve hard-to-find problems that other people have looked at with little or no success, as well as writing very complex, fast code in large systems.   I have worked on all aspects of products, both enterprise level and low-level embedded.

I really shine when it comes to crisp, fast, and sophisticated algorithms

That’s one of the reasons I decided to write Sagelight.  The idea of writing a Lightroom/Photoshop-level program was very intriguing and fun.  Plus being very into Photoshop and mathematics,  as well as photography, it was a great fit.

New Technology is Stunning, and Keeps me on my Toes

Because image-processing algorithms are so intensive, one of the first things I realized when writing Sagelight was that I really needed to understand new technology.  For example, a few years earlier, you never used the floating-point processor unless it was really necessary.   But, that’s old-school.

Another thing you avoided was using memory, whenever possible.  In a way, that’s still the case, but now CPUs have such a high-level of cache, you want to use some memory but not a lot of memory – which is more of a radical change in the thought process than some people might think.

The Bokeh Was Slow Until I Realized Something about Caching

I actually wrote the Bokeh function twice.  The first pass was just too slow.  It was taking too long, and I just couldn’t figure it out.  I profiled the code, and it really should be working much faster than it was.

Then I realized it wasn’t the instructions I needed to be looking at, but the memory usage.  Tthe Bokeh algorithm was looking at maps for the shape of the blur.  These maps are necessary and they are stored in memory. With a high-enough radius, the memory usage (being N^2, which is always a time-killer) slowed down the process far too much.

I wasn’t quite sure what to do.  But, then I realized that there really is a lot of core memory available in the CPU cache, but not enough to store these shape maps.

Then I decided to compress the maps and decompress them on-the-fly. The Cpu cache can store the compressed maps. Now, when you’re doing a Bokeh function, Sagelight is literally decompressing data constantly as it creates your final image.  Most of the time, the CPU never leaves the cache and reads from the memory where the maps are stored, even though the code itself is referring to it constantly.

It turns out that with newer CPU architecture, and the available memory in the Cache , as well as the speed of the Cache Memory, it was much, much faster to actually perform a decompression algorithm than to just store the shape maps uncompressed!

Sagelight has made me a much better programmer

Without realizing it, Sagelight has made me into a much better programmer.  As the lines of code mounted into the hundreds of thousands, you need to get organized – very organized.

Re-Usable Code

I started writing Sagelight in a highly Object-Oriented manner.  First of all, I love object oriented programming.  It’s just great, and is what makes it possible to write something like Sagelight as one person (not to mention some great, free libraries out there like TiffLib, Jpeg, and others) where it just wouldn’t be possible a few years ago.

Even though at least 30-40% of the code is written in multi-processing SSE assembly language (where OO has little impact), making the code very OO based is key in keeping track and re-using all of that code, SSE, assembly, or C++.

With such an object-oriented structure, I was able to write code to be very re-usable.  In many companies, you see a lot of cut-and-paste strategies, where code is just stolen from one part of the project and copied into another area with just one little tweak.

I have seen this over and over, and also seen it become the bane of the project over and over, too.

Thank goodness I had that experience to know beforehand what a trap copying-and-pasting code becomes when used as an easy way to re-use code because you don’t want to take the time to expand on a function that other functions are already calling.

Being able to write such re-usable – and expandable code, such as through set() and get() functions, as well as virtual functions – becomes a way to build on what you’re doing rather than having it become confusing as cut-and-paste actions do.  That is one of the things you tend to ‘know’ as a programmer, but sometimes don’t want to follow because it is time-consuming up-front, which is always…well… a bummer.

The reason many programmers do this sort of thing in company environments is because of deadlines – they will often go to their manager and state that we need to change function X() to support this new set of code.  But, the manager knows that to change function X() just a little means testing the entire system over again, which means going upstairs to let them know more money will need to be spent just to make a little change.  So, the manager says to the programmer, “Just cut-and-past function X() and call it function X2().  The manager just saved the company some money in the short-term, but cost the project a lot – possibly the entire set of code, as doing this as a common strategy causes code to crash in on itself.

Don’t get me wrong.  I used to be that way, too, and writing Sagelight – because of the needs of such a project and the desire to make it work (that is, suddenly being manager, programmer, and that guy upstairs)  – caused me to really think about long-term strategies and form some great processes that make such an incredible difference.

Unwavering Standards

I’ve also learned that certain standards are there for a reason, even when they seem like they are in the way.

Every time I write a new piece of code, such as the Cinepan Player I just released – or even a smaller item as part of a larger project like Sagelight – I am faced with the same issue.

It goes like this: if I just want to get this function done, I can just go with it and write it out.  But, if I want to start it right, by writing the exception handlers, implement get() and set() functions, and so-forth, the set up for it will take hours – hours with zero tangible results.

So many times, it’s just easier to dive right in and start programmer. 

And I pay for it every time.

Here’s a good example.  When I wrote the Cinepan Player, there were also a number of smaller items I wrote as console programs (i.e. non-Windows; just DOS/Cmd).  These were meant as temporary programs for the creation of the Cinepan Panoramas.

But, then I realized that I needed to add support for adding your own panoramas, and these programs were not only needed for the overall program, but needed to be put inside the program itself.

Suddenly, I needed this code in the main program. I couldn’t just take a console program with all of its printfs() and global variables (I didn’t OO it, either. Sad smile ) and fit it into the Cinepan Player.   Also, I had an error mechanism that just bailed to DOS on any error, where now it would need to clean up memory and present the error message to the user in a nice Windows box.

I then had to go through these programs and create a class structure, wrap the printfs() into a virtual function (which was easy, since I luckily wrote a printf() wrapper for the Windows libraries I use a long time ago), and then (the hard part) go through the entire set of code and make sure the error-handling caught any error and piped it back to the main program instead of bailing to DOS.

This took me nearly two days when, if I had just stuck with what I know to be absolute standards from the beginning, it would have taken me just a couple hours, because that’s what you get when you follow good coding standards.  

I think I might do a post just about this subject, as it turns out to be very interesting, especially when taking a look at even small practices, such as making sure there is only one exit point of a function, or wrapping all memory allocations and that sort of thing.

More in a couple days

I actually intended this blog entry to be on something else.  I wanted to compare the Cinepan Player code to writing modules for Sagelight, but I guess I had more of a stream-of-consciousness going on than I thought.

Please send me your feedback!  Let me know if this is a good place to post this sort of blog entry (or not).  I can always keep it on the discussion board.  But, I’ve wanted to do a ‘programmer’s’ blog’ for a long time now (to discuss some interesting things (to me, anyway) going on with programming, in general, as I create Sagelight).

Cinepan Flickr Group – Download Cinepan Images, and Upload Your Images

flickr

Cinepan Flickr Group

I just started the Cinepan Flickr Group.

www.flickr.com/groups/cinepan

In this group, I have placed a number of Cinepan Images – some new ones just today.  WIth the new version of the Cinepan Player, you can download any of these jpegs (as the ‘original image’) and just place it in the Cinepan Player directory.  The Cinepan information (such as Horizon, Angle, Description, Thumbnails, etc.) is embedded in the JPEG.

Uploading Your Own Cinepan Images

Now that you can use the Cinepan Player to create your own Cinepan Images, you can create a JPEG that you can upload to the group.

One of the reasons I wrote the Cinepan Player – in addition to a kind-of fascination with the idea of ‘Cinematic’ panoramas – is because people take such great panoramas these days, especially since cameras make it so much easier.

With an amazing immersive effect, putting your panorama into the Cinepan Player will make it look great!

To download the Cinepan Player (it’s free), go to www.sagelighteditor.com/cinepanplayer.

People have upload such great images edited with Sagelight Editor as well as other image editors, and I am excited to see what happens in this group, too!

Cinepan Player 2.1 (Beta) – Add Your Own Panorama

AddPanoramaWindow2

I am happy to announce the release of Sagelight Cinepan Player 2.1.

Based on requests, you can now add your own panorama to the Cinepan Player.

All you need to do is to load your image and set a few settings, such as the Horizon Angle, Description, and so-forth, and you’re ready to go!

Easy JPEG Format

In addition to the standard .PGR format (which encrypts your jpeg), you can also create a simple JPEG that you can upload to photo-sharing sites for people to download.  The Cinepan Image information is embedded in the JPEG itself, so that’s all you need.

You can also create a simple text file so that describes any JPEG file and add it to the Cinepan Player.

Add Your Panorama Interactively

You can add your panorama easily by simply loading it, and the Panorama will start displaying, moving back-and-forth.  You can then set the Angle, Horizon Angle, and other elements in realtime to get the best look for your Panorama.

When you’re done, you can write out any of the three formats (a text file, a new JPEG with a set JPEG Quality, or a PGR file that stores your JPEG).

Then just put the images into the Cinepan Player directory.

Download the new version of Cinepan Player

You can download the new version at www.sagelighteditor.com/cinepanplayer/CinepanPlayer.exe (it will show as version 2.1)

If you have not downloaded the Cinepan Player before, also download one of the two .PKG files to get started with some Cinepan Images:

www.sagelighteditor.com/cinepanplayer/CinepanPlayer.pkg (55 Megs — this has 27 Cinepan Images in it)

or

www.sagelighteditor.com/cinepanplayer/CinepanPlayer_lowres.pkg (25 Megs – this has 25 Cinepan images in it at a lower resolution, though it’s not really noticeable).

Put either of these files in the same directory as the Cinepan Player and it will extract them automatically.

ui1

 

Beta’ Tag added – Sometimes A lot of Code Looks Simple!

As it turns out, the addition of the code to add your own Panorama was just as much or more code as the main program.  This is because I wanted to make it very simple, and, as most programmers know, the more simple it looks, the more code there is underneath it all!

I labeled it a ‘Beta’ version to make sure all of the kinks or worked out.

I also put up a Flickr Group Page, which I will announce in the next post.

Getting back to Sagelight Development

Now that I have the Cinepan Player out in a way where people can add their own panoramas, hopefully it will grow.

But, I know many people are wondering if I am drifting away from Sagelight development in favor of the Cinepan Player.  As I described on the discussion board, not at all – and, in fact, this will help drive Sagelight development for many reasons, the least of which is the Cinepan Player being an outlet for work done with Sagelight editor.

I’m really looking forward to seeing your panoramas, and I think they will look fantastic in the Cinepan Player.

I am back to Sagelight development now, and the Cinepan Player will be a nice place for me to use Sagelight – all images I post for the Cinepan Player are edited in Sagelight for contrast, noise, color, etc.

Rob

Sagelight Cinepan Player (free)

DelicateArchScreenshot-700

(Delicate Arch Sunset, 180º Cinepan Panorama in Widescreen Mode)

 

Introducing Sagelight Cinepan Player

I am pleased to announce the Sagelight Cinepan Player, a free Windows program that uses the Sagelight Cinepan Perceptual algorithm to gently show amazing, high-resolution panoramas on your desktop, either as a standalone application or elegant screensaver.

For various reasons, I took a break from Sagelight Image Editor development and write the Sagelight Cinepan Player Application/Screensaver.   It gave me a creative outlet and a nice break to re-energize for Sagelight development.  The Cinepan Player, by itself, was a hefty (but discrete) project, and it allowed me to use a lot of technology and other techniques I developed for Sagelight Image Editor, such as multi-processing code, SSE4, CPU caching, and streamlined multi-threading (not always easy).

Check out the main page http://sagelighteditor.com/cinepanplayer/ and the UI help section showing all the controls

Panoramas have an incredible immersion quality (i.e. feels like you are there) to them, and a perceptual algorithm was developed to enhance this effect and to show panoramas as widescreen (when, even at 16×9, the tend to become very distorted on the edges).

Based on an algorithm I wrote a few years ago, my interest was recently renewed in the technology when I showed my previous work to a friend.  In short I was astounded (described more below) because of how the technology in the last few years has made the idea of displaying slow moving panoramas corrected in real-time suddenly more compelling and realistic.  On my high-contrast 16×9 monitor, it feels like I am looking through a window!

(see Enter Sagelight Cinepan Player below, for more information).

 

I spent the last 2-3 months working on a revamp of the Cinepan Algorithm, which is a perceptual algorithm (vs. QTVR, etc.) created to enhance the incredible immersion quality with panoramas.

Cinepan Player uses many of the algorithms I wrote for Sagelight Editor, working with multiple CPUs and SSE4 code to bilinearly resize and anti-alias the image in realtime, for each and every frame.

The code was written to multi-thread fluidly, using as little processor time as possible, while taking advantage of the multiple CPU, SSE4, and high-speed memory now in most computers – Cinepan play will still run with older computers, too (see various settings).

note to SSE2-only users: Cinepan Player runs on any computer with SSE2 or above.  Please let me know of any problems – it’s sometimes hard to be absolutely sure ALL SSE4 instructions are out of the SSE2 code!

The result is an elegant presentation of immersive panoramas, slowly revealing themselves in the desktop in incredibly high resolution, and without the edges and “jaggies” typical of panoramas moving as slow speed.

Where to Download the Cinepan Player

    Download both the CinepanPlayer.exe and CinepanPlayer,pkg file (either the high-resolution or low-resolution package) into any directory you choose and run it – the package will self-extract.

    From there, you can turn it into a screensaver by simply copying CinepanPlayer.exe to c:\windows\system32\CinepanPlayer.scr (and then setting it as your screensaver in the Windows Control Panel).

    Click here for more information and instructions on Downloading the Cinepan Player

Free, but based on Donations

I am giving Cinepan Player away for free, with no strings attached.  I want the Cinepan Player to be an elegant screensaver-type program, and don’t want to put nag screens in it or prompt for donation in the runtime screen.

There is a current release set of 27 Cinepan Images, as well as 3 specialty image (I will make a separate blog post about that, as well).

I have hundreds lined up, but they take anywhere from 1-2 hours to process (due to various issues, as they need to be noise-reduced, color adjusted, and – in many cases – touched up due to visible seams, etc.)

Also, I have many plans for additions, including automatic downloading, wallpaper sets, your own Panoramas, and so-forth, as donations come in.

As with Sagelight Editor, the programming and Cinepan Image creation is very intense.  It just took 2 1/2 months to revamp the first version I wrote a few years ago – it actually came out very well, so well, in fact, that it is hard to see the work behind it; the multi-cpu threading (which was very difficult to achieve), the real-time bilinear resizing, and so-forth.  And that’s as it should be, because the more elegant the program come out, the more simple it looks!

There’s also the Bandwidth issue, as with a download package of 65 megabytes, my server costs will be high, and any donations will help there, too.

Donations Help Sagelight Image Editor (free version)

I have decided to give away a free version of Sagelight Image Editor – the standard version, without many of the Pro Features.  To do this, I need some support, and I am giving away the Cinepan Player to help with the cause.

To donate to the Cinepan Project, go here

I will post more when I set up the website.

The following is from the main Help Web Page

See the help page at http://sagelighteditor.com/cinepanplayer – I will set up its own website soon, as donations come in.

 

360º Val Senales Ski Resort, Italy, Fullscreen Mode– Realtime Video plays in high-resolution 1080p (1920×1080) as it appears on the desktop. (Music included is in the Youtube Video, not the Cinepan Player Program)

 

An Introduction to Amazing, Immersive Panoramas

I’ve long been fascinated with panoramas.  They are great as still images, and even better (in most cases) as moving images.    As a 2-dimensional image, the panorama — when viewed through a panorama player that performs a lens correction on every frame, such as QTVR, Cinepan Player, and others — provides an immersion quality feeling just like you are there.

Add to that higher resolution than video, and a gently panning, smooth algorithm, and you have the Cinepan Player.     I original developed some pieces of the Cinepan Player a long time ago, and my interest was recently renewed when I realized that the new technology in monitors and computers in the last few years made panoramas even more compelling and interesting.

With 16×9 high-contrast monitors, the feeling like you are really there is much stronger than before.  I believe a lot of this has to do with mixing the art of the Still with that of Motion — the motion provides the 3-d experience, and the 2-d still provides the artistry.  Much like an impresionist painting, which can draw you in (also with an immersion quality to it) even more than an actual picture, the elegant movement of a panorama can bring you in more than a video.

I’ve put a particular emphasis on non-360 degree videos (Cinepan Player works with both types), as there are 10 times (or more) many great non-360 degree panoramas than there are full-360-degree ones out there.  This is discussed more below.

 

screenshot-75

Higher Resolution than a Video

The reason panoramas can draw us in is two-fold.   Not only do we have the artists view of the world with the still picture, leaving or imagination to fill in the gaps in our own way, but the panoramas provided with the Cinepan Player are much higher resolution than a video.  I have provided two examples via Youtube, but the quality difference is really amazing.

The slow movement of the panorama with the artistry of the image itself provides an amazing you-are-there quality that has to be experienced.

Sagelight Cinepan Player

Sagelight Cinepan Player is the result of my fascination with showing art from other artists (as well as my own), and the idea of creating artistic works involving technology. In this case, it is the art of the still mixed with motion on your monitor, elegantly and slowly panning across the screen, showing breathtaking views as the panorama is slowly revealed.

Working on the Cinepan Player has been a great project over the last few months, and has allowed me to flex some programming muscle, as well as use many of the high-end (SSE4, multi-processor) code I developed for Sagelight.

 

Apache Canyon, Arizona (180º) – Widescreen example. This is a good example of the Cinepan Perceptual Algorithm working. (Music in the Youtube Video only, not the program itself). This is an example of non-360º images working in the Cinepan Player; there are far more incredible non-360º degree panoramas than 360º panoramas, and the Cinepan Player deals with them nicely, rotating them slowly and coming to a gentle stop. Plays in 1080p (1920×1080), try it fullscreen.

 

The term “Cinepan”

The term Cinepan is short for “Cinematic Panorama”, which means a panorama that is automatically played back in a way that makes it look like a camera is moving, as opposed to a still photograph.  That is to say, in terms of the Cinepan Player, the idea is to create a true cinematic experience, including high-resolution images and artistic presentation. The term “Cinepan” came from the term “Cinemagraph” (which is a seamlessly looping GIF with an aesthetic effect, usually (but not always) a clip from a movie — high-resolution cinemagraphs being one of my next projects and additions to the Cinepan Player). I decided the term  “Cinepan” worked well as a description for the aesthetic display of a moving panorama.

Also embedded in the term “Cinepan” is the aesthetic (i.e. the artistic element) and the “art of the reveal”.  In most panoramas, when displayed as a Cinepan (i.e. moving image on the screen), each frame reveals a new piece of the image that is an individual piece of artwork and describes itself in its own terms.  This is why most panoramas are not 360-degrees, because there are almost always portions of a 360-degree image that wouldn’t work due to trash cans, wires, and such.

With just about all Cinepan panoramas, the feeling of being there is enhanced as each new frame reveals a new part of the image that focuses on that aspect of the scene.   In a few 360-degree cases, there might be a part that doesn’t “self-describe”, but these are short-lived as the panorama rotates back into a more interesting part of the image.

 

 

(Main UI Screen, or Configuration Menu when run as a Screensaver)

 

Panorama images vs. Panoramic Images

A “Panoramic” image is one that shows a very wide angle of a scene, such as landscapes, canyons, city, and so-forth.   Panoramic images are usually very wide and give more of a feeling the scene as it was taken.

thumb-new
The above image is both a panorama and a panoramic image (note how the shoreline is curved – this is what makes this image a panorama; it is not lens corrected, which allows the Cinepan Player to show it as if it was shot as a panning video camera).

A Panorama is similar to a panoramic image, except that it is “uncorrected”, and can often be much wider/longer than a panoramic image.  A Panorama can be anywhere from 120-degrees to 360-degrees, much of the time impossible to view on the desktop without being distorted.  This is why many panoramas have so many bends and curves in them, because they have not been run through a lens-correction process.

When a panoramic image is a panorama (i.e. not corrected for a flat perspective), we can also play it as a Cinepan Image.

In terms of programs like Quick-Time Virtual Reality player and other panorama viewers, as well as Sagelight Cinepan Player, this allows the Panorama display in real-time, with each and every frame corrected to the angle in which you’re viewing the image — that is, as you move the image, it is just like you’re turning your head, or a video camera is panning over a scene.

My Obsession with Moving Panoramas, the Cinepan Algorithm,and Cinepan Player vs. QTVR, etc.

One day (about 10 years ago), I decided to write an algorithm to correct panoramas.  I was getting into Panorama photography (stitching together image after image), and thought it would be something nice to have in my code library, and was interested in the math involved.  I set out to see what I could do with the algorithm and just generally play with it.

I particularly didn’t like the “jaggies” that would appear in sharper images, especially when you moved them slowly.  I wanted to get a more aesthetic experience, rather than a manually controlled one.

One of the biggest reasons for wanting to explore panorama coding was because, as it turns out, most great panoramas are less than 360-degrees, and it was hard to view them in the QTVR or other manual setting.

I also wanted to explore showing them widescreen, which caused problems.  The wider a panorama is viewed (i.e. the higher the overall viewing angle), the more the edges became very distorted.   I didn’t like the idea of looking at an amazing panorama with a sweeping vista in a 3×4, or even 16×9 box.  But, once I moved them wider, the edges distorted so heavily that the aesthetic experience definitely suffered.

Cinepan Algorithm

Along the way, I tinkered with the algorithm and found a way to perceptually translate the image to help with the edge distortion, which also helped with the aliasing (i.e. jagged edges) problem.    Also, at the time, the QTVR algorithm was still under patent (maybe it still is?), so moving to a perceptual algorithm allowed me to release the code.

Cinepan Player was written to work in real-time in high resolution screens, and without much of the aliasing that can occur with the QTVR (i.e. technically correct) algorithm.   Correcting each frame takes a lot of CPU power, and to remove the aliasing requires even more.  This can be difficult on high-resolution panoramas and/or monitors.

Slow-moving, Sweeping Images

Sagelight Cinepan was written to provide a very smooth, slow-moving image in an aesthetic atmosphere.   With QTVR/other players, moving very slowly tends to increase the aliasing/jagged edges, which is why most images are not high-resolution (the higher the resolution of the image, the more jagged edges appear). Sagelight Cinepan was designed to show high-resolution images on high-resolution monitors with little or no jagged edges.

360º and non-360º Images

As it turns out, most panorama images are not 360-degrees.   It’s a rare panorama that looks great in 360-degrees; there’s always a trash can, parking lot, or some other uninteresting part of the image that makes a 360-degree panorama less than artistic.    Cinepan Player is designed around these images and plays them very smoothly for a great aesthetic effect.

Cinepan Player also plays 360-degree images, many of which are just great on their own, too! see 360-Degree Images in Cinepan Player

thumb2

(Paris as seen from the Eiffel Tower)

 

Suddenly, Sagelight Cinepan (previously HD Panorama) More Relavent than Ever!

You may remember Sagelight Cinepan Player as “HD Panorama”.  This was released a few years ago, but then my attention moved to Sagelight Image Editor.

Nasa and Disney Connection

A long time ago, I showed Nasa and Disney the panorama program with the Mars and Moon pictures I turned into panoramas (many 360-degree).  They really liked them.  Nasa had offered funding for the project, but then Google (who was financing this sector) said they’d have to derail some funds, so that offer was withdrawn for lack of funding.  Google later offered to put this panoramas in the Google Moon and Google Mars programs.

Disney offered to put these panoramas on their DVD of Roving Mars, but only had a $40,000 budget for the entire DVD and couldn’t offer any support.   They also offered high praise for the HD Panorama program and the Moon/Mars panoramas I showed them, but $40,000 was just too small of a budget to offer even the equipment I needed to make them for the DVD.   I probably should have taken Disney up on the offer, but there were complications getting the DVD out, and I don’t know if they ever released Roving Mars on DVD anyway.

Enter Sagelight Cinepan Player

A few months ago, I was showing HD Panorama to a friend, and I suddenly realized that HD Panorama is more relevant than ever, and much more interesting now than it was before.  There were so many compelling reasons (listed below), I sat down and turned it into Cinepan Player.

Here are the reasons that not only is Sagelight Cinepan Player more compelling and relevant now, but much more improved:

  • 16×9 Monitor & Television Format.  The very first thing I noticed when showing this to my friend is that the HD Panorama program was now on a 16×9 monitor and just looked tremendously better. Since the idea of the Panorama is a wide view, 16×9 worked perfectly.  Also, the higher contrast of newer monitors and televisions just made it look that much better, crisp, and sharp
  • Faster Processor Speed and Anti-Aliasing.  At the time, even with multiple processors, it took a lot of CPU power to run the Panorama Program, and it couldn’t really anti-alias well when viewed at high resolution.  You may noticed that if you take a QTVR image and make it full-screen, it typically doesn’t run in real-time (it’s slow).  The real-time correction process in a panorama display uses a lot of CPU instructions.  Now, with higher CPU speeds, performing a bilinear-resize on each and every frame is possible and does not make your computer hot!
  • More Panoramas Available Now.  When I wrote HD Panorama, panoramas were still fairly new and hard to find.  Now, there are thousands of great panoramas people have created and can be included in Sagelight Cinepan Player.
  • Graphic Design.  Another thing I noticed when I showed HD Panorama to a friend was that something wasn’t right.  The panoramas looked nice, but there was an aesthetic quality missing.  In the original version, the borders and text were BIG.    I guess times have changed, and moving to a thinner border, and a smaller and more aesthetic font made all the difference.
  • Better Bandwidth on the Internet.   When HD Panorama was first written, downloading packages of 50 Megs or more took much longer, and was also more expensive to host.  Now, 50+ megs takes very little time and costs very little to host, making it easier to download all of the Cinepan Image files.
  • Panoramas More Popular then Ever and Panorama Functions in Every Camera.  Almost all cameras (including phones) come with a “Panorama Mode”.    Now that panoramas are more popular than ever, more people are taking them and posting them with ease.  Many come out at a professional level by hardly trying and with little or no post-processing.  In the future, Cinepan Player can have an interface to allow you to put in your own panoramas (see Supporting Cinepan Player in the Sidebar).
  • Sagelight Image Editor.  I was able to use many of the routines I wrote for Sagelight image editor (not to mention the experience) to provide fast and accurate functionality, written in multi-processing SSE2 and SSE4 code; not something that was available at the time HD Panorama was written.  This also allowed me to process each Panorama image in Sagelight Editor to work better in the Cinepan Player (i.e. noise reduction and other items, such as sharpening without creating noise).

thumb3

(The Matterhorn, Swiss Alps)

 

Cinepan Player is Free, but Could use Some Support

I am happy to give Cinepan Player away for free.  It is a great project to work on, and I am very please with the way it came out.  Each panorama included in Cinepan Player is time-consuming, and I will do more if enough people like Cinepan Player.

Please consider supporting Cinepan Player.  It is 100% free, but your donations will help keep it going and allow me to find and create more Cinepan Images, and also to make an interface to allow you to put in your own panoramas.

Please enjoy Cinepan Player!

Rob Nelson
rob@sagelighteditor.com

Sagelight Workflow: Creative Flow vs. Work Flow

RedDuotoneSoft

 

Introduction

A hot topic on the discussion board lately has been about workflow — general workflow and also the Sagelight workflow with its differences between editors like Photoshop & Lightroom (which are different in of themselves).

WIth the Sagelight Workflow, for example, the Undo/Redo Brush figures prominently in terms of selective or local editing vs. image-wide editing that you get when you move sliders around and such (when the masking is off anyway).

A lot of this discussion is based on what has happened with the last release as well as what is about to happen with the next release – there are new additions with the UI coming, the Sagelight format, as well as a number of other things that are aimed specifically at getting all this power in Sagelight to be more visible and even easier to use.

 

FEExoY7_edited-small

Work Flow vs. Creative Flow

I was just thinking about the idea of workflow and the HDR image I just posted (shown above). (Click to see the a larger version, before & after, and HDR tips.). 

There were two elements to working with this image (and most images, in general):

1. Addressing the ‘needs’ of the image.  A need of the image can be defined as something that needs to be done to the image before you can be creative with it – such as getting rid of noise, because noise tends to become amplified the longer you leave it in and continue editing. A need can also be lens correction, general brightening, etc. – the general idea being to get the image beyond what it needs and into your creative control.

I decided to wanted to HDR the above image. At this point, there were things that needed to be done, such as using the HDR Details, and other functions, in order to achieve what I was looking to get out of this image. I am, of course, in creative control of these things, in terms of what they do and how much they apply themselves to the image, but this is now a ‘need’ of the image to get what I want. I need to HDR it. I also need to perform some noise reduction on it (because it started as a medium-quality JPEG with lots of noise). Afterwards with a second pass of NR, I don’t need to do it; that’s creative because I want to smooth it; it’s not a specific need of the image.

2. Being spontaneously creative. After I did the initial HDR and noise reduction, then I could become creative with the image. A little dodging and burning, definition, Soft Glow — whatever I decided to do in a spontaneous creative mode. I will probably talk more about this in other posts as I get into the ‘Sagelight Workflow’, because this is why Sagelight was created and precisely why it works the way it does — the second part of the Apply Button blog post (The Apply Button in Sagelight (Part I –Functional Layer editing) is about the incremental/discrete editing approach. I’ve been looking for a name for this type of emphasis on creative digital editing, and the idea of being a free-flowing creativity really starts to describe it well.

With a creative flow, I can just decide what I want to do. The lower-left of the HDR image above looked too bright, so I lowered the light there selectively. Either through Dodging and Burning or just by using the RGB sliders and then the Undo/Redo Brush (or, I could mask the area, feather the mask, and do it dynamically) — that is, there are many ways. In fact, I don’t remember because it doesn’t matter. I get my ways of doing things down and just do them. In Sagelight, there are quite a few ways to get the things you’re looking for.  That’s what makes it creative and fun — the idea of just ‘doing’ things however they occur. Version 5 will have an option to give you an entire list of what you did, btw!

3. Repeating the Process. Once I perform the creative process, there may be more ‘needs’ of the image vs. creative things I want to do. For example, using HDR, definition, sharpening, etc. — this can bring out color noise and other unwanted details. So I might have to address these things selectively. Also, after I think I am done, I might inspect the image and see things I don’t like, such as some edges created by the HDR process (which is common in bright areas, but typically easily removed through NR, Bokeh, the Smoother, and the upcoming Surface Blur). So, I am back to looking at the things the image needs to not have distracting elements.

Once I do that, I might take a break from it — even come back the next day — and see if my creative process takes me anywhere else or if I think it’s just fine the way it is. For me, taking a break between images is key, so I can desaturate my brain from my edited picture and see it objectively, more as if I wasn’t the one who worked on it and was actually seeing it for the first time, with fresh eyes.

WIth a free-flowing creative session, I can often take the same image and come out with two very different result images. Sometimes it’s hard to decide which I like better, even when they look dramatically different.

Conclusion

I’m posting this topic for a couple reasons. One is to get that difference out there in terms of workflow — the needs of an image vs. the creative flow, in terms of ‘work’ flow and ‘creative’ flow.

As the issue of the ‘Sagelight Workflow’ becomes more prominent with the next release, I want to make sure these issues are properly bifurcated. I read an article a while back talking about the ‘Lightroom Look’, which was not a shot at Lightroom, but a recognition that sometimes our edited images can start look the same because we do the same things over and over to every image.

For me, the ‘same’ things we do to our images are what the image needs and not letting the creative flow automatically be the ‘work’ flow.

After that, it’s about being creative!

The second reason I mention all this is because, well, this is part of the discussion on the Sagelight Workflow!

Who Says You Need Multi-Exposure for HDR? Create great Single-Frame HDR effects with JPEG or RAW images… and Sagelight.

flower-new-500

 

Introduction

Sagelight has a number of HDR functions to help you create HDR effects, both photo-realistic and artistic, or any level in-between.

You don’t need multiple-frame exposures or RAW to create great HDR effects.  Of course, RAW and multi-exposure images definitely help in the HDR process.  You can use RAW directly with Sagelight or import a multi-frame exposure for use with Sagelight HDR functions.

You can also use JPEG for HDR with Sagelight and create effects that rival the multi-frame exposure images you see on the Web – and in just a few minutes.

All images in this article started off as 8-bit JPEG images and took just a few minutes each.

With the latest Sagelight Noise Reduction release, Sagelight’s ability to create nice, clean, and glowing HDR images has increased.

What is HDR?

HDR has a very wide range.  The term “HDR”, meaning High Dynamic Range, is just that – the idea that you can bring out the shadows, bring down the highlights, and have an image that isn’t washout or too shadowy, showing all the great details in one image on your screen.

The term HDR tends to suggest artistic, but artificial-looking images.  This isn’t the case with the original idea of HDR. 

Google’s image search with the term “HDR” returns with this result (screenshot):

google-hdr

The above image suggests that the term “HDR” tends to be evocative of the artificial.

But that isn’t always the case.  HDR is varied and can help you with your images, creating the artistic/artificial images above, or keeping your image looking authentic while working wonders with the light.

Sagelight contains HDR functions that can help bring out the most in your image while keeping it photo-realistic, and can also help you create more artistic effects.

Photorealistic HDR

IMG_0271_edited_7_org_500

Above is a dark, flat picture.  It’s hard to deal with, but HDR can help.  Either through the Light Blender or HDR details function, this picture can quickly be transformed into a nice, bright, and colorful image:

IMG_0271_edited_6

 

This was done with the HDR Details function.  However, the Light Blender can also be used for a similar result – a little less defined and the utmost in photorealism (i.e. “HDRish”), but still technically HDR. 

IMG_0288_org_650

Artistic HDR

Sagelight can also create the more artistic form of HDR.  The above example is very dark – in fact, it’s a photo that I originally passed on a couple years ago because it was too dark.  What to do with problem images?  One thing to do is to HDR them! 

IMG_0288_edited_7_650

 

I was able to do something nice with this image, and this is from a single-frame JPEG source, right from the camera.   Imagine what can be done with RAW.

Black and White Images

HDR also excels at helping you with your black-and-white images.  Here are two examples, both created in the Black and White HDR function:

black-and-white-1-new_edited_4

This example uses more of the artistic approach.  Also used was the Bokeh and Vignetting.

black-and-white-car-new-650

This image is more of a photo-realistic approach.  The Sagelight HDR process added great contrast.

Before and After Examples

3778054969_04cd555132_o_edited_33778054969_04cd555132_o_edited_2

This is an example of creating a very bright and clean HDR.  Everyone seems to do stairwells with HDR, so I joined the crowd with this one, too.

 

9ZpeX_edited_4_7009ZpeX_edited_3

Another image where HDR was used (HDR Details) to bring out a dark picture, but also keeping it photo-realistic.  A over-smoothed it with the NL Wavelet NR to give it a slight clean, smooth and artistic look.  The expression on the dog’s faces are priceless, and now that can be seen!

 

353303390_e374cb4bf9_o_edited_6

 

Conclusion

You don’t need multiple exposures to create great HDR.  In fact, you can do it with JPEGs.  RAW will help you create better HDR effects, but if you’re working with JPEG, there is quite a bit you can do with HDR.  In fact, all images in this article originated as JPEG images, many in only medium resolution.

Sagelight’s HDR functions can help you create great photo-realistic and artificial effects, or anything in-between.  With the Light Blender, Black-and-White HDR, HDR Vivid Photo, CLAHE, and many other tools, Sagelight has the functionality that brings the most out of your image with HDR. 

With other functions, such as the Undo/Redo Brush (which allows you to mix HDR results with the original image), Sagelight NR, Dodge and Burn, Vignetting, etc., you can do more than just HDR – you can continue with the creative process and create your entire result. 

With Sagelight’s HDR and other tools, you can achieve high-end, professional-level HDR effects using RAW, imported multi-frame exposures, or even use a JPEG.

Try out the following tools in Sagelight for HDR:

  • Light Blender.  Depending on how you use it, the Light Blender can work wonders on your image.  It works well to keep HDR photo-realistic, and in many ways is more “HDR” than other HDR functions.  It can also be used to create more artistic effects, depending on settings.
  • HDR Details.  This is a great function to help create HDR effects. Try hitting the “Brighten HDR shadows function”.
  • Power Details.  This can be a great function to get HDR form your image.  Small settings can bring out details from your image in a powerful manner.
  • HDR Vivid Photo.  This is a great function that can help you keep your image photo-realistic, but also can give it a nice, well, vivid look!
  • HDR Black And White.  This function works great for turning images into stark black-and-white pictures.
  • Artistic HDR.  Go all out for the artistic with this function.  You can use the HDR Details for the same effect, but may require more settings
  • HDR Panel.  An advanced function, this has all you need to create HDR images, both artificial and realistic.
  • Retinex.  A very interesting and varied function.  Try the presets – this can make a big difference.  After the presets, then fine tune it for better effect,.
  • Sagelight Noise Reduction.  This can help immensely in getting the right HDR effect.  Try using minimally before the HDR process.  After the HDR process, try the NL Wavelet in small settings, or very large settings to smooth the result and give your image that soft, glowing HDR look.
  • Highlights and Details (CLAHE).  This is a great function to recover highlights, but also to create HDR definition in your image.  Use with the Blend Curve for nice effect.
  • Soft Glow.  Soft Glow is a great function to help bring out the details and light in your image.  This can be used by itself, but also makes a great function to use after you’ve HDR’d your image
  • Smart Contrast (in the Smart Light Controls).  After you’ve worked on your image, try just a touch of the smart contrast – this is in the Smart Light Controls.
  • Focus and Definition.  Located in the Power Box (Definition is labeled ‘1’, and Focus is labeled ‘2’, until the next release, where they will be labeled with their names), this can give your image a lot of details after you’ve used some HDR functions – or all by themselves without using any HDR effects.