fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // your code goes here
  6.  
  7. int m_height = 3072;
  8. int m_width = 4096;
  9.  
  10. const int oriRows = m_height / 2;
  11. const int oriCols = m_width / 2;
  12. const int tgtRows = m_height;
  13. const int tgtCols = m_width;
  14. const int oriSize = oriRows * oriCols;
  15. const int tgtSize = tgtRows * tgtCols;
  16. float rowFactor = (float)(oriRows) / tgtRows;
  17. float colFactor = (float)(oriCols) / tgtCols;
  18. int tgtIndex = 0;
  19. // rOffser is zero
  20. int oriGROffset = oriSize;
  21. int oriGBOffset = 2 * oriSize;
  22. int oriBOffset = 3 * oriSize;
  23.  
  24.  
  25.  
  26. int r = 2;
  27. int c = 2;
  28.  
  29.  
  30. float oriRowF = r * rowFactor;
  31. float oriColF = c * colFactor;
  32.  
  33. // Get the integer and fractional parts of the coordinates
  34. int oriRowI1 = (int)oriRowF;
  35. int oriColI1 = (int)oriColF;
  36. int oriRowI2 = min(oriRowI1 + 1, oriRows - 1); // Clamp to max row index
  37. int oriColI2 = min(oriColI1 + 1, oriCols - 1); // Clamp to max col index
  38.  
  39. printf("oriRowI1 = %d\n", oriRowI1);
  40. printf("oriColI1 = %d\n", oriColI1);
  41. printf("oriRowI2 = %d\n", oriRowI2);
  42. printf("oriColI2 = %d\n", oriColI2);
  43.  
  44.  
  45. float deltaRow = oriRowF - oriRowI1;
  46. float deltaCol = oriColF - oriColI1;
  47.  
  48. printf("deltaRow = %f\n", deltaRow);
  49. printf("deltaCol = %f\n", deltaCol);
  50.  
  51.  
  52. // Get the four neighboring pixel values from the original array
  53. int tempPos11 = oriRowI1 * oriCols + oriColI1;
  54. int tempPos12 = oriRowI1 * oriCols + oriColI2;
  55. int tempPos21 = oriRowI2 * oriCols + oriColI1;
  56. int tempPos22 = oriRowI2 * oriCols + oriColI2;
  57.  
  58. printf("tempPos11 = %d\n", tempPos11);
  59. printf("tempPos12 = %d\n", tempPos12);
  60. printf("tempPos21 = %d\n", tempPos21);
  61. printf("tempPos22 = %d\n", tempPos22);
  62.  
  63.  
  64.  
  65.  
  66. /*float r11 = (float)m_imgInput[tempPos11];
  67. float r12 = (float)m_imgInput[tempPos12];
  68. float r21 = (float)m_imgInput[tempPos21];
  69. float r22 = (float)m_imgInput[tempPos22];
  70. float gr11 = (float)m_imgInput[tempPos11 + oriGROffset];
  71. float gr12 = (float)m_imgInput[tempPos12 + oriGROffset];
  72. float gr21 = (float)m_imgInput[tempPos21 + oriGROffset];
  73. float gr22 = (float)m_imgInput[tempPos22 + oriGROffset];
  74.  
  75. float gb11 = (float)m_imgInput[tempPos11 + oriGBOffset];
  76. float gb12 = (float)m_imgInput[tempPos12 + oriGBOffset];
  77. float gb21 = (float)m_imgInput[tempPos21 + oriGBOffset];
  78. float gb22 = (float)m_imgInput[tempPos22 + oriGBOffset];
  79. float b11 = (float)m_imgInput[tempPos11 + oriBOffset];
  80. float b12 = (float)m_imgInput[tempPos12 + oriBOffset];
  81. float b21 = (float)m_imgInput[tempPos21 + oriBOffset];
  82. float b22 = (float)m_imgInput[tempPos22 + oriBOffset];
  83.  
  84. //printf("r11[%d] %f, ", oriRowI1 * oriCols + oriColI1, r11);
  85. //printf("r12[%d] %f, ", oriRowI1 * oriCols + oriColI2, r12);
  86. //printf("r21[%d] %f, ", oriRowI2 * oriCols + oriColI1, r21);
  87. //printf("r22[%d] %f, ", oriRowI2 * oriCols + oriColI2, r22);
  88.  
  89. // Bilinear interpolation
  90. float interpoR =
  91. r11 * (1 - deltaRow) * (1 - deltaCol) +
  92. r21 * deltaRow * (1 - deltaCol) +
  93. r12 * (1 - deltaRow) * deltaCol +
  94. r22 * deltaRow * deltaCol;
  95.  
  96. float interpoGR =
  97. gr11 * (1 - deltaRow) * (1 - deltaCol) +
  98. gr21 * deltaRow * (1 - deltaCol) +
  99. gr12 * (1 - deltaRow) * deltaCol +
  100. gr22 * deltaRow * deltaCol;
  101. float interpoGB =
  102. gb11 * (1 - deltaRow) * (1 - deltaCol) +
  103. gb21 * deltaRow * (1 - deltaCol) +
  104. gb12 * (1 - deltaRow) * deltaCol +
  105. gb22 * deltaRow * deltaCol;
  106. float interpoB =
  107. b11 * (1 - deltaRow) * (1 - deltaCol) +
  108. b21 * deltaRow * (1 - deltaCol) +
  109. b12 * (1 - deltaRow) * deltaCol +
  110. b22 * deltaRow * deltaCol;*/
  111.  
  112. return 0;
  113. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
oriRowI1 = 1
oriColI1 = 1
oriRowI2 = 2
oriColI2 = 2
deltaRow = 0.000000
deltaCol = 0.000000
tempPos11 = 2049
tempPos12 = 2050
tempPos21 = 4097
tempPos22 = 4098