100 likes | 203 Vues
This study proposes a method to reduce random noise in images by calculating block distances and replacing noisy blocks with neighbors' indices or a lookup table for improvement. The algorithm calculates the mean for each block and evaluates the distance to adjacent blocks to identify noise. By replacing noisy blocks, the algorithm improves the Peak Signal-to-Noise Ratio (PSNR) of the image. Results show a 5% reduction in noise with a 23.9067 dB PSNR and a 10% reduction with a 20.1393 dB PSNR. The study concludes that while block distance reduces noise, further accuracy can be achieved by considering a clique concept. Implementing this algorithm can enhance image quality and reduce noise levels effectively.
E N D
VQ Encoded Image Ex.3 Kahlil Muchtar D023010006
VQ Encoded Image Original VQ Image PSNR=30.1887
Algorithm • Calculate the mean for every block (the size is the same as index size) • Calculate the distance between block and its 4 adjacent (N4 neighbours') • If the distance > threshold, it means, the block is regarded as random noise. • If the block is random noise, the index of that block replaced by one of its neighbours index. • Otherwise, corresponding index will be obtained from look up table.
Illustrations Replaced by neighbours index x,y Calculate the Euclidean distance between block and its 4 neighbours. If distance > TH then, …
5% VQ PSNR = 23.9067 5% VQ Improved PSNR Improved = 25.5726
10% VQ PSNR = 20.1393 10% VQ Improved PSNR Improved = 22.4339
Conclusions • Block distance can reduce the random noise (5%) but would be less accurate if noise is 10%. • Further improvement, instead of calculating the distance of entire neighbours, the clique concept may increase the accuracy.
Appendix: Noise • intrnd = 0; • for(int y=0;y<height/BlockSize;y++){ • for(int x=0;x<width/BlockSize;x++){ • rnd = rand()%100; • tempx = rnd%(width/BlockSize); • tempy = rnd%(height/BlockSize); • if(rnd<10) // 10% • ClassY[y][x]=ClassY[tempy*BlockSize+y][tempx*BlockSize+x]; • } • }
Appendix: Euclidean Distance • sumdistance = distance2+distance4+distance5+distance7; • if (sumdistance > 250) • { VQYI[y*BlockSize+j][x*BlockSize+i] = VQ[ClassY[y-1][x]][j][i]; • } • else • { • VQYI[y*BlockSize+j][x*BlockSize+i] = VQ[ClassY[y][x]][j][i]; • }