Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #define Image_Height 20000
- #define Image_Width 10000
- #define Kernel_Dim 5 // convolutin kernel will be of width [2(r)+1]*[2(r)+1]
- using namespace std;
- int main()
- {
- // Intializing image size and intially seeding it with some randome values 0-255 (gray scale)
- int **image, **out_image;
- image = new int *[Image_Height];
- for(int i=0;i<Image_Height;i++)
- image[i] = new int[Image_Width];
- out_image = new int *[Image_Height];
- for(int i=0;i<Image_Height;i++)
- out_image[i] = new int[Image_Width];
- for(int i=0;i<Image_Height;i++)
- for(int j=0;j<Image_Width;j++)
- image[i][j]=rand()%256;
- // Intializing kernel let say guassian kernel of 5*5
- int kernel[Kernel_Dim][Kernel_Dim]={};
- int a[5]={1,4,6,4,1}; // to get gussian kernel by multiplying a*a we get gussian kernel of size 5*5
- for(int k=0;k<5;k++)
- for(int i=0;i<Kernel_Dim;i++)
- for(int j=0;j<Kernel_Dim;j++)
- kernel[i][j]=a[i]*a[j];
- int i,j,k,l,sum,r=2,count=0;
- // Main calulation done here multiplying image with kernel matrix
- // boundaries values skipped
- for(i=2;i<Image_Height-2;i++)
- {
- for(j=2;j<Image_Width-2;j++)
- {
- sum=0;
- for(k=-r;k<r;k++)
- {
- for(l=-r;l<r;l++)
- {
- sum=sum+image[i+k][j+l]*kernel[k][l];
- }
- }
- out_image[i][j]=sum;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement