correctly set border in xtrans combined demosaicers, hopefully fixes #4639
This commit is contained in:
@@ -290,7 +290,7 @@ protected:
|
|||||||
void dcb_refinement(float (*image)[3], uint8_t *map, int x0, int y0);
|
void dcb_refinement(float (*image)[3], uint8_t *map, int x0, int y0);
|
||||||
void dcb_color_full(float (*image)[3], int x0, int y0, float (*chroma)[2]);
|
void dcb_color_full(float (*image)[3], int x0, int y0, float (*chroma)[2]);
|
||||||
void cielab (const float (*rgb)[3], float* l, float* a, float *b, const int width, const int height, const int labWidth, const float xyz_cam[3][3]);
|
void cielab (const float (*rgb)[3], float* l, float* a, float *b, const int width, const int height, const int labWidth, const float xyz_cam[3][3]);
|
||||||
void xtransborder_interpolate (int border);
|
void xtransborder_interpolate (int border, array2D<float> &red, array2D<float> &green, array2D<float> &blue);
|
||||||
void xtrans_interpolate (const int passes, const bool useCieLab);
|
void xtrans_interpolate (const int passes, const bool useCieLab);
|
||||||
void fast_xtrans_interpolate (const array2D<float> &rawData, array2D<float> &red, array2D<float> &green, array2D<float> &blue);
|
void fast_xtrans_interpolate (const array2D<float> &rawData, array2D<float> &red, array2D<float> &green, array2D<float> &blue);
|
||||||
void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection);
|
void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection);
|
||||||
|
@@ -114,7 +114,7 @@ void RawImageSource::cielab (const float (*rgb)[3], float* l, float* a, float *b
|
|||||||
#define fcol(row,col) xtrans[(row)%6][(col)%6]
|
#define fcol(row,col) xtrans[(row)%6][(col)%6]
|
||||||
#define isgreen(row,col) (xtrans[(row)%3][(col)%3]&1)
|
#define isgreen(row,col) (xtrans[(row)%3][(col)%3]&1)
|
||||||
|
|
||||||
void RawImageSource::xtransborder_interpolate (int border)
|
void RawImageSource::xtransborder_interpolate (int border, array2D<float> &red, array2D<float> &green, array2D<float> &blue)
|
||||||
{
|
{
|
||||||
const int height = H, width = W;
|
const int height = H, width = W;
|
||||||
|
|
||||||
@@ -201,7 +201,7 @@ void RawImageSource::xtrans_interpolate (const int passes, const bool useCieLab)
|
|||||||
// printf("%d-pass X-Trans interpolation using %s conversion...\n", passes, useCieLab ? "lab" : "yuv");
|
// printf("%d-pass X-Trans interpolation using %s conversion...\n", passes, useCieLab ? "lab" : "yuv");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
xtransborder_interpolate(6);
|
xtransborder_interpolate(6, red, green, blue);
|
||||||
|
|
||||||
float xyz_cam[3][3];
|
float xyz_cam[3][3];
|
||||||
{
|
{
|
||||||
@@ -974,7 +974,7 @@ void RawImageSource::fast_xtrans_interpolate (const array2D<float> &rawData, arr
|
|||||||
|
|
||||||
const int height = H, width = W;
|
const int height = H, width = W;
|
||||||
|
|
||||||
xtransborder_interpolate (1);
|
xtransborder_interpolate (1, red, green, blue);
|
||||||
int xtrans[6][6];
|
int xtrans[6][6];
|
||||||
ri->getXtransMatrix(xtrans);
|
ri->getXtransMatrix(xtrans);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user