Anna University Result

Perarignar Anna University is a university in Tamil Nadu state, India, offering higher education in Engineering, Technology and Allied Sciences.
Anna University was founded in 1978 as a unitary type of university. It integrated four technical institutions of madras, including the College of Engineering, Guindy, established in 1794, and Madras Institute of Technology, established in 1949, which offered the first engineering degrees in India. Anna University Results are declared for every semester for the students.
Read More..

Download Cool apple mac logo wallpaper for Desktop

Set-1 Set-2 Set -3

Apple or Apple Logo Wallpaper 2Apple or Apple Logo Wallpaper 3Apple or Apple Logo Wallpaper 4


Apple or Apple Logo Wallpaper 6Apple or Apple Logo Wallpaper 7Apple or Apple Logo Wallpaper 8


Apple or Apple Logo Wallpaper 9Apple or Apple Logo Wallpaper 10Apple or Apple Logo Wallpaper 11


Apple or Apple Logo Wallpaper 12Apple or Apple Logo Wallpaper 13Apple or Apple Logo Wallpaper 14


Apple or Apple Logo Wallpaper 15Apple or Apple Logo Wallpaper 16Apple or Apple Logo Wallpaper 18


Apple or Apple Logo Wallpaper 19Apple or Apple Logo Wallpaper 20Apple or Apple Logo Wallpaper 21


Apple or Apple Logo Wallpaper 22Apple or Apple Logo Wallpaper 23Apple or Apple Logo Wallpaper 24


Apple or Apple Logo Wallpaper 25Apple or Apple Logo Wallpaper 26Apple or Apple Logo Wallpaper 27

Set-1 Set-2 Set -3
Read More..

Flash CS3 Web Training By Dnewtoncreatives



Teaching You All You Need In Flash CS3.


SHARE BY GK
Computer Knowledge
Read More..

SURF correspondence and Matching

Today Im going through using OpenCV (2.1) or Blepo to create a nice and easy to use class for feature correspondence and correspondence matching. SURF stances for Speeded up Robust Features and is an improvement to SIFT (Scale Invariant Feature Transform). It isnt too bad to implement (and a good exercise) if you have the time but OpenCV has a nice version that does multiple octaves and octave layers.
One of the drawbacks of the OpenCV implementation is that they do not have a good correspondence matching algorithm, which is a shame, since a decent one can be done extremely easily. The code I have was written courtesy of Brian Peasley, which I have edited heavily (much to his probable dismay).

Click here for full code (blepo people look in the blepo folder)
Make sure your OpenCV lib and header files are set up properly

I build two classes for this. The first is a class for the feature, descriptor, and match information and is shown below:

class SURFDescriptor{
public:
    bool            valid;
    float             x, y, radius;
    //128 or 64 floats depending on whether extended is chosen or not
    float             *descriptor;   
    SURFDescriptor        *match;
};


The second class is the main SURF class for the feature extraction and putative matching. Note that this is not a necessary class and can be done with a series of functions instead. However, since I use a very large library, it is often more convenient for me to group these within classes. Feel free to take code out of context (though be careful about memory leaks).

class SURF{
public:
    typedef SURFDescriptor* Iterator;
    typedef SURFDescriptor* ConstIterator;

    SURF(double hessianThreshold = 500, bool extended = true) //good values are (500, true)
        : m_threshold(hessianThreshold), m_extended(extended), m_CvSeqKeypoints(NULL), m_CvSeqDescriptors(NULL), m_descriptors(NULL), m_size(0) {}
    ~SURF() {}

    //must release before done using, not included in the destructor for shallow copying purposes
    void Release() {
        if(m_storage != NULL) {
            cvClearMemStorage(m_storage);
            cvReleaseMemStorage(&m_storage);
            m_storage = NULL;
        }
        if(m_descriptors != NULL) {
            free(m_descriptors);
            m_descriptors = NULL;
        };
        m_size = 0;
    }
    inline Iterator Begin() { return m_descriptors; }
    inline Iterator End() { return m_descriptors + m_size; }
    inline ConstIterator Begin() const { return m_descriptors; }
    inline ConstIterator End() const { return m_descriptors + m_size; }
    int ExtractFeatures(IplImage *img);
    void OverlayFeatures(IplImage *img);
    IplImage* DisplayMatches(IplImage *img, IplImage *img2);
    int size() const {return m_size;}
    SURFDescriptor &operator()(int index){ return m_descriptors[index]; }
    SURFDescriptor operator()(int index) const { return m_descriptors[index]; }
    SURFDescriptor *operator[](int index) const { return &(m_descriptors[index]); }
    bool extended() const { return m_extended; }
    float PutativeMatch(const SURF &surf2, int prune_dist, float percent = 0.1f);

private:
    double         m_threshold;
    bool        m_extended;
    SURFDescriptor    *m_descriptors;
    CvSeq         *m_CvSeqKeypoints, *m_CvSeqDescriptors;
    CvMemStorage* m_storage;
    int        m_size;
};


There are a couple of nice feature display and matching display functions in the class as well for debugging. If you want those, just download the original file at the top or bottom.
For now, I will just show the extract features and matching algorithms:

#define SQR(X) ((X) * (X))

inline float SAD_Descriptors(const SURFDescriptor &desc1, const SURFDescriptor &desc2, int length){
    float SAD = 0;
    float *p1 = desc1.descriptor, *p2 = desc2.descriptor;
    for(int i = 0; i < length; i++)
        SAD += fabs( *p1++ - *p2++ );
   
    return SAD;
}

int SURF::ExtractFeatures(IplImage *img){
    m_storage = cvCreateMemStorage(0);
    CvMat *gray_img = cvCreateMat(img->height, img->width, CV_8UC1); //create matrix which is what CV SURF operates on
    cvCvtColor(img, gray_img, CV_BGR2GRAY); //convert color IplImage to a gray scale matrix
   
    //Find surf features and calculate their descriptors
    CvSURFParams params = cvSURFParams(m_threshold, m_extended ? 1 : 0);       
    cvExtractSURF(gray_img, 0, &m_CvSeqKeypoints, &m_CvSeqDescriptors, m_storage, params );

    m_descriptors = (SURFDescriptor *)malloc(m_CvSeqDescriptors->total*sizeof(SURFDescriptor));
           
    CvSURFPoint *r;
    SURFDescriptor *desc = m_descriptors;
    for(int i = 0; i < m_CvSeqKeypoints->total; i++){
        r = (CvSURFPoint*)cvGetSeqElem( m_CvSeqKeypoints, i );
       
        desc->x = r->pt.x;
        desc->y = r->pt.y;
        desc->radius = (float)r->size;

        desc->descriptor =    (float *)cvGetSeqElem( m_CvSeqDescriptors, i);
        desc++;       
    }
    m_size = m_CvSeqDescriptors->total;
    cvReleaseMat(&gray_img);
    return m_CvSeqDescriptors->total;
}


float SURF::PutativeMatch(const SURF &surf2, int prune_dist, float percent) {
    vector<int>     index1(m_size);
    vector<float>    minval1(m_size);
   
    vector<int>     index2(surf2.size());
    vector<float>    minval2(surf2.size());

    float val;
    //for every feature in surf1, compare descriptor to every feature in surf2 and save the index
    //of the minimum SAD.
    vector<float>::iterator min1 = minval1.begin(), min2 = minval2.begin();
    vector<int>::iterator in1 = index1.begin(), in2 = index2.begin();
    SURFDescriptor *desc1 = m_descriptors;
    for(unsigned int i = 0; i < minval2.size(); i++)
        *min2++ = 999.0;

    int tempcnt,ext=0;
    while(1)
    {
        tempcnt=0;
        min1 = minval1.begin();
        in1 = index1.begin();
        for(int i = 0; i < m_size; i++){
            *min1 = 999.0;
            SURF::Iterator desc2 = surf2.Begin();
            min2 = minval2.begin();
            in2 = index2.begin();
            for(int j = 0; j < surf2.size(); j++) {
                if(sqrt(SQR(desc1->x-desc2->x) + SQR(desc1->y-desc2->y)) <= (prune_dist+ext))
                    tempcnt++;
                val = SAD_Descriptors( *desc1, *desc2, m_extended ? 128 : 64 );   
           
                //comparing ith point in surf1 to every point in surf2
                if(val < *min1){
                    *min1 = val;
                    *in1 = j;
                }

                //comparing jth point in surf2 to ith point in surf1
                if(val < *min2){
                    *min2 = val;
                    *in2 = i;
                }
                desc2++;
                in2++;
                min2++;
            }
            desc1++;
            in1++;
            min1++;
        }
        if(tempcnt==0)
            ext++;
        else break;
    }

    //sort minvals to get top percent
    int minIndex;
    float temp;
    float avg = 0;
    min1 = minval1.begin();
    //find the average of minval1
    while(min1 != minval1.end())
        avg += *min1++;
    avg /= minval1.size();
    assert(percent > 0 && percent < 1);
    int endSort = (int)(percent*minval1.size());
    min1 = minval1.begin();
    for(unsigned int i = 0; i < endSort; i++) {
        minIndex = i;
        float currMin = *min1;
        vector<float>::const_iterator tmpMin = (minval1.begin()+i+1);
        for(unsigned int j = i+1; j < minval1.size(); j++) {
            if(*tmpMin < currMin) {
                minIndex = j;
                currMin =*tmpMin;
            }
            tmpMin++;
        }
        if(minIndex != i) {
            temp = *min1;
            *min1 = currMin;
            minval1[minIndex] = temp;
        }
        min1++;
    }

    float T = minval1[endSort];
    //see if minimum comparison is putative between feature point sets
    //dirty code, a little bit better now
    desc1 = m_descriptors;
    in1 = index1.begin();
    for(unsigned int i = 0; i < index1.size(); i++)
    {
        if(index2[*in1] == i && minval2[*in1] < T)       
            desc1->match = surf2[*in1];
        else
            desc1->match = NULL;
        in1++;
        desc1++;
    }
    return avg;
}


 Consider making the matching algorithm better or more efficient, possibly with an implementation involving RANSAC.




If you want the full source, including an example of how it works, download the source below:

Click here for full code (blepo people look in the blepo folder)
Make sure your OpenCV lib and header files are set up properly

Consider donating to further my tinkering.


Places you can find me
Read More..

PowerShell v2 Function ConvertFrom Rot13

Here is a quick function to convert ROT13 values (check them out here if you dont know what it is) for PowerShell. No encoding, purely decoding:
function ConvertFrom-Rot13
{
     [CmdletBinding()]
     param(
          [Parameter(
              Mandatory = $true,
              ValueFromPipeline = $true
          )]
          [String]
          $rot13string
     )
    
     [String] $string = $null;
     $rot13string.ToCharArray() |
     ForEach-Object{
          Write-Verbose"$($_): $([int] $_)"
          if((([int] $_ -ge 97) -and ([int] $_ -le 109)) -or (([int] $_ -ge 65) -and ([int] $_ -le 77)))
          {
              $string += [char] ([int] $_ + 13);
          }
          elseif((([int] $_ -ge 110) -and ([int] $_ -le 122)) -or (([int] $_ -ge 78) -and ([int] $_ -le 90)))
          {
              $string += [char] ([int] $_ - 13);
          }
          else
          {
              $string += $_
          }
     }
     $string
}
Read More..

Computer Science Teaching Fellows Starting Up in Charleston SC



Google recently started up an exciting new program to ignite interest in computer science (CS) for K12 kids. Located in our South Carolina data center, the Computer Science Teaching Fellows is a two-year post graduate fellowship for new STEM teachers and CS graduates. The goal is to bring computer science and computational thinking to all children, especially underrepresented minorities and girls, and close the gap between the ever-increasing demand in CS and the inadequate supply. We hope to learn what really works and scale those best practices regionally and then nationally.

The supply of CS majors in the pipeline has been a concern for many years. In 2007, the Computer Science education community was alarmed by the lack of CS majors and enrollments in US colleges and universities.

Source: 2009-2010 CRA Taulbee Survey (http://www.cra.org/resources/)

This prompted the development of several programs and activities to start raising awareness about the demand and opportunities for computer scientists, and to spark the interest of K12 students in CS. For example, the NSF funded curriculum and professional development around the new CS Principles Advanced Placement course. The CSTA published standards for K12 CS and a report on the limited extent to which schools, districts and states provide CS instruction to their students. CS advocacy groups, Computing in the Core and Code.org have played an instrumental role in adding provisions to the reauthorization of the Elementary and Secondary School Act to support CS education. More generally, we have seen innovations in online learning with MOOCs, machine learning to provide personalized learning experiences, and platforms like Khan Academy that allow flipped classrooms.

All of these activities represent a convergence in the CS education space, where existing programs are ready for scale, and technological advancements can support that scale in innovative ways. Our Teaching Fellows will be testing after school programs, classroom curriculum and online CS programs to determine what works and why. They’ll start in the local Charleston area and then spread the best programs and curriculum to South Carolina, Georgia, North Carolina (where we also have large data centers). They are currently preparing programs for the fall semester.

We are very excited about the convergence we are seeing in CS education and the potential to bring many more kids into a field that offers not only great career opportunities but also a shot at really making a difference in the world. We’ll keep you posted on the progress of our Teaching Fellows.


Read More..

Two Wheeler Repairing In Hindi By SkillTrainIndia



Two Wheeler Repairing In Hindi By SkillTrainIndia.


SHARE BY GK
Computer Knowledge
Read More..