diff_c.c 848 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <stdlib.h>
  2. #include <math.h>
  3. #include "../tp2.h"
  4. void diff_c (
  5. unsigned char *src,
  6. unsigned char *src_2,
  7. unsigned char *dst,
  8. int m,
  9. int n,
  10. int src_row_size,
  11. int src_2_row_size,
  12. int dst_row_size
  13. ) {
  14. unsigned char (*src_matrix)[src_row_size] = (unsigned char (*)[src_row_size]) src;
  15. unsigned char (*src_2_matrix)[src_2_row_size] = (unsigned char (*)[src_2_row_size]) src_2;
  16. unsigned char (*dst_matrix)[dst_row_size] = (unsigned char (*)[dst_row_size]) dst;
  17. int i,j,val;
  18. printf("%d %d \n", n,m);
  19. for(i=0;i<n;i++){
  20. for(j=0;j<m*4;j+=4){
  21. val=((src_matrix[i][j+1]-src_2_matrix[i][j+1])+(src_matrix[i][j+2]-src_2_matrix[i][j+2])+(src_matrix[i][j+3]-src_2_matrix[i][j+3])) / 3;
  22. if (val < 0)
  23. val=-val;
  24. dst_matrix[i][j+0]=val;
  25. dst_matrix[i][j+1]=val;
  26. dst_matrix[i][j+2]=val;
  27. dst_matrix[i][j+3]=0;
  28. }
  29. }
  30. }