Skip to content

madratman/pcnn_simple

Repository files navigation

mkdir build
cd build
cmake ..
make
  • Usage
    ./line_segmentation <path_to_your_image>

  • Parameters: You can adjust the following parameters in pcnn_simple.h

  - No of time steps = `PCNN_NO_OF_STEPS`
  In side struct `pcnn_parameters`:
   - // Multiplier for the threshold at the current step.    
     double VT = 1.2;
    
    // Synaptic weight - neighbours influence on linking compartment
    std::vector<double> W = {sqrt(1/2), 1.0, sqrt(1/2),
							 1.0, 1.0, 1.0, 
						     sqrt(1/2), 1.0, sqrt(1/2)};

    // Linking strength in the network.
    double B = 0.2;

    // step_value by which each oscillator's threshold is decreased if it 
    double step_value = 10; 

For videos, you can uncomment the for loop in line_segmentation.cpp, but right now it is pretty slow.

(Adding the following stuff for easier colloboration and tracking)

Higher level Roadmap of things to be done (as of 25/10/15)

  • Tune pcnn.
  • Choose at which time step to perform post processing
  • Elimination of noisy pixels(details in paper)
  • Edge detection (see algorithm 2 in paper)
  • K-means clustering followed by the "smart" Hough transform (the voting procedure) to detect power lines. Read paper for details. The voting procedure is better in one of the references : Real-time line detection through an improved Hough transform voting scheme For kmeans, I'll again modify the source for pyclustering's ccore.

Development Log

  • Week 1
    • Late night 19/10/15 : Found pyclustering. Took out required files ccore and building on top of it.
    • Throughout the week : Getting familiar, adding support 2D weight matrices and rectangular images, methods to read output, executable for image/video line detection, minor contribution to pyclustering, mailing the author of pyclustering - who turned out to be pretty helpful and is already addressing issue #259, and of course adding and later removing my own bugs and getting confused here and there.
    • 25/10 : First part of paper is mostly done. PCNN needs tuning.
    • **Results can be seen in `results/preliminary_Oct_25' directory. In the screenshots, "pcnn_result_n.png" is the image at time step n of the network. The "HSI image.png" has a misleading name. It's just a monochrome visualization of quantized intensities(in 64 lines, as written in paper) of the original image. The parameters can be seen from the commit from that day.

More ideas for power line detection / segmentation.

  • Stacked PCNN, in a ConvNet style architecture. This is a general idea for segmentation. Dunno about power lines.
    Here the convolution part is replaced by the PCNN equations. The output of the pixel is fed on to the next layer and so on.
    You could, in theory, tweak which temporal (or "serial") pulse should be passed on to the next network. Or you could just pass on everything as parallel channels.
    But then, you could also cherry pick wich time step for each layer should be chosen and passed on to the next.
    This whole thing is similar to (CRFs as RNNs) [http://www.robots.ox.ac.uk/~szheng/CRFasRNN.html]

Daniel's ideas(quoting):

Resources for CNN

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published