Saturday, November 5, 2011

Marathon 2

Another marathon, before I submit the video assignment by Monday ( digital copy ) and Tuesday ( report ).

To do list in this weekend:

1. Fix blur effect's artifact
2. Pencil Render
3. Background keying using image
4. Toolbar

Tuesday, October 25, 2011

It's alive!!

In this stormy weather, with a infinite variation of codes combination, I have done it! It is now working, the video player and editor is alive!

Those That Are Working:
  • Open a video
  • Play a video
  • Add Effect
  • Brightness, Contrast, Negative, Posterize, Black&White
  • Delete Effect
  • Render Video

Those That Need Tweaking:
  • Blur, Sharpen, Edge Detect
  • Floating Player Panel
  • Faster Speed

Those That Is Not Working All, But I Will Make It Work:
  • Background Keying
  • Pencil Render

Those That Is Not Working, And I Will Not Going To Work On It:
  • Save
  • Manual Adjustment
  • Histogram
  • Color Pencil, Paint
  • Automated Histogram Adjustment, Color Enhancement

Marathon

I will be doing an assignment marathon today, I expect a 80 - 90 % completion.

I will integrate the video player with my previous assignment, redo the effect, strip down the gui.

I will post updates later.

Monday, October 24, 2011

Update on Assignment 2

Updates:

  • Raw Data processing: Successful in extracting raw data from the Processor, but I still have problem in processing the data, and play the data as video
  • Video Effect And Codec: I figured out how to use custom codec/effect, but I still face the same issue in playing the processed data as a video.
  • GUI: I will used the GUI from my assignment 1, but I will strip it down and remove some of the feature.
  • Effect: I'll reuse the image effect, but I will be throwing away any excessive effects that I do not plan to used on my video, typically those that are extremely CPU intensive.
  • Effects that I will be keeping
    • Negative / Invert
    • Posterize
    • Brightness
    • Contrast
    • Grey Scale
    • Sharpen
    • Blur
    • Edge Detect
    • Emboss

Friday, October 14, 2011

JMF

I realized that I have to report my progress for my assignment 2, a video program, with simple visual effect capability.

I have been doing some research, and some run some sample codes. But currently it is a real mess, there are a lot of problem with the videos, the conversion and extraction of raw data, processing the raw data, rebuild the video from the processed raw data.

It is just a long list of task. I will post updates soon... sigh...

Wednesday, September 28, 2011

Extra

I have add Gaussian Blur, Glow, and RGB Adjustment to the program.

I want to quote credit to Mr. Jerry Huxtable, he's also a programmer, which also code a program which is similar to my assignment, and he wrote a article discussing various type of blurring and how to perform the calculation.

I also put in a Moveable JScrollPane which pan around the image. I re-use the codes from my previous group assignment, since the scrollpane from the particular assignment is very close to what I want, I did some re-calibration, and fit it into my program.

Sunday, September 25, 2011

Angelina Jolie Test

This post contains the results I get from one of the requirement of the assignment. I was required to create a black-pencil drawing and a color-pencil drawing filter ( which I have done ), and I need to test it on Angelina Jolie's photo.

So, here's the result:

Angelina Jolie: Original


Angelina Jolie: Histogram Enhancement + Black Pencil

Angelina Jolie: Black Pencil

Angelina Jolie: Color Pencil


Assignment Finished

I have finished my DMC assignment! And I fulfilled all the requirements. What's left for now is to write a report, and to wrap up the codes by commenting them.

Saturday, September 24, 2011

New Color Pencil Drawing

I have rebuilt the color pencil drawing filter, now it is faster and the result resembles a color pencil drawing more than the last one did.

Original: Chrysanthemum

Color Pencil Drawing: Chrysanthemum

Original: Hydrangeas
Color Pencil Drawing: Hydrangeas

Friday, September 23, 2011

Re-do Color Pencil

I will redo the color pencil filter, as I feel that it is not technically a color pencil filter, I will be using the method mentioned in my assignment's reference.

And I will start with the brightness and contrast adjustment by tomorrow.

Wednesday, September 21, 2011

Background Key

I have done the background keying functionality. However, the background keying do not work perfectly, because there are chancces that the background have similar color with the foreground object, hence resulting a imperfect key.

For example, I have a sandy beach background, and I have a model in from, if the model wears anything that is white, blue, light blue, light brown, just any color that may appears in the background it have blocked, the keying calculation will key out some portion of the model.

I will post the image explaining this soon.

Saturday, September 17, 2011

Black Pencil And Color Pencil

I have just finish two composite filter, namely Black Pencil and Color Pencil. I use a list of filters stored in them to render out the image sequentially. However, in Color Pencil, I have to use some inter-image processing technique to blend results together, in order to create a illusion of pencil drawing.

There are some slightly draw backs for the color pencil filter though. It seems that maybe due to the way that the Hydrangeas's photo is taken, the photo is slightly softer than others, which makes the internal calculations to produce a less obvious result, for both color pencil and black pencil.

Anyway, the Chrysanthemum impresses me the most, even though in the photo create a real mess in Automated Histogram Equalization, the photo looks equally good in color-pencil drawing, although I don't think there's any kid can produce that kind of drawing with just color-pencil.



Chrysanthemum: Color Pencil Render 
Chrysanthemum: Black Pencil Render

Hydrangeas: Color Pencil Render

Hydrangeas: Black Pencil Render

Desert: Color Pencil Render

Desert: Black Pencil Render

Automated Histogram Equalization

I have built the automated histogram equalization filter for my program. I manually check the values of the map table to make sure that the figures are calculated and arranged correctly in the table. In short, histogram equalization is similar to "Level" adjustment, which is very common in most intermediate image editor. However in this case, the calculation is not adjustable, the color is remapped by assuming the darkest point in the photo as pure black, and the brightest point in the photo as pure white, and all the colors in between are stretched are remapped accordingly.

Automated Histogram Equalization only works for unprocessed/minimally processed photo. The effect of histogram equalization on some more artistic photo will look something like the example of the red-yellow based Chrysanthemum 's photo.

Before

After
 













Before

After
 













Before

After

Marathon

I have planned to achieve 90% completion by the end of tomorrow. Now I want to simply concentrates on the requirement of the assignment. I have dispose of the move up and move down function as it has no direct connection with my assignment, I will put it back up soon.

I will do some wrap up on previous code, and clean up my GUI, then I will move to the following item:
  1. Automated Histogram Adjustment
  2. Pencil Drawing Effect Composition ( Black and White )
  3. Pencil Drawing Effect Composition ( Color )
  4. Keying using background photo
  5. Simple Filter Adjustment Panel

Wednesday, September 14, 2011

New Histogram!!

New Histogram
 I have add-in new channels for my histogram, which is Hue [H], Saturation [S] and Brightness/Value [V] for the HSV color.

As an addition, I also spend a short while to enhance the histogram for RGB combined channel and Hue channel by using a gradient of black to white for RGB and a Hue Cycle color for Hue channel.

Tuesday, September 13, 2011

HSV Histogram

I will work on histogram again to fulfill the assignment's requirement. The new histogram will be able to display the following channel: RGB combined, R, G, B, Hue, Saturation, and Value/Brightness.

I will try to do something different with the luminance/RGB combined, and the Hue histogram to make it more user-friendly and pleasing. I will post the result by tomorrow, if I pulled it off tonight.

Sunday, September 11, 2011

Graphical User Interface is done

Screen Shot of The Proposed GUI
I have been pretty busy with other things these two day, but today I have spend some good amount of time to build this GUI. Thanks to a SVG project I did last semester with my friends, which were really good at this, I can quickly refer to the source codes from that project and use them to build this GUI. If all goes well, this should be the final look, with some more tweaking nevertheless.

Apparently, there were some issues to the non-linear rendering. I have to put on hold for that first, since for now my highest priority is to fulfill my assignment's requirement A.S.A.P. as I have other assignments to work on. I will come back to this whenever I'm free. Who knows? Maybe I will kept on working on this even after this assignment is over, or maybe I should even use it as my final year project.

Friday, September 9, 2011

Non-Destructive Manipulation

I have decided to use non-destructive image manipulation via a list of filter instances. There are still some proves of concept to be done before building a full usable architecture.

I will also try to apply non-linear image rendering via the non-destructive image manipulation. This should greatly improves the image rendering speed, if I'm certain of what I'm doing.

I already have in mind about the new GUI, I will make it as clean as possible, for the ease of use and to accommodate more area for the image itself.

Thursday, September 8, 2011

Neighborhood Filter

I successfully convert my neighborhood operation into a class-based operation, NeighborFilter. For example, I have a XFilter instance, using it, I can apply the effect stored in the instance to my image. This is the basic concept of it, which is similar to PointFilter.

I will rebuild a new GUI as well. The existing GUI for the program is simply a extension from a example shown in DMC lab session, and it is for displaying and testing purpose. Final GUI will be out by the weekend, if possible.

Wednesday, September 7, 2011

Object Oriented

From my previous build, I rebuild my point operation filters into separate class. Instead of using Filter.negative() a static method in Filter class, I'm now using negative.process(), where negative is an instance of NegativeFilter class. This will grant me more control over the filters in future development.

I will rebuild the neighborhood operation filter by this evening.

Tuesday, September 6, 2011

Pilot

To be honest, this is not the first post of my development blog. The actual posts that I have made previously, before this blog is setup, is posted here, another blog in my profile.

But still, this blog is considered to be the official blog.

Please refer there for any development post prior to this post.