1) Convert the image to grayscale 2) Divide the image into overlapping blocks 3) Apply DCT to every block and

generate feature vector 4) Create two arrays: the first array (array A) has the feature vectors of the reference region, which need to be checked with the rest of the image to determine whether it is copied and pasted and the second array (array B) consists of remaining blocks from the array 5) Lexicographically sort both the arrays, as all the blocks are read continuously and so that all the rows related to a region in the image are together - Do I need to do this step? 6) How do I match A and B? Do I match one row of A with one row of B? Or do I match the entire Array A with the same number of rows of Array B? Here, I'm using correlation to match the two. Can some one help me with point numbers 5 and 6, as I don't know how to proceed with this? Dear Pallavi, I cannot understand what is for you a "reference region". Do you need the source area you used to tamper the image? In practical cases you don't have the original image, so you cannot know which part of the image is tampered. Block-matching methods typically works by: - dividing the image into overlapping blocks; - extracting some features from the blocks (then you have a feature array for each bloch); - sorting the list of feature arrays according to some criterion; - checking the list of ordered arrays. for each block: - - comparing the current block with the next N (N is an input parameter) blocks in the list, matching their feature arrays (in your case, using correlation). - - put the pair of the indexes of the matching blocks (if any) into another array - - repeat the process with the next block. In this way you can avoid the all vs all confrontation problem, as you have to compare only those blocks which have similar features (within a small range of tolerance). Sometimes you have to post-process your data, to filter out false positives. The most common approach is to consider only the pairs of blocks which have the same geometrical distance (if you want to consider only rigid transformations). I hope that my answer can help you. Please feel free to contact me for any other explanations. Regards, Giuseppe You are trying to detect copy move forgery. You have taken DCT as one feature. You need not to generate two arrays. 1. just put values in array. 2. perform Lexicographical sorting on this feature vectors(keep tracks of indices for position of Block) 3. you can take euclidean distance(logical) between blocks and compare it with threshold for good results. You can have good result with this.