Get pdaf data from camconst.json
This commit is contained in:
@@ -19,7 +19,7 @@ namespace rtengine
|
|||||||
|
|
||||||
extern const Settings* settings;
|
extern const Settings* settings;
|
||||||
|
|
||||||
CameraConst::CameraConst()
|
CameraConst::CameraConst() : pdafOffset(0)
|
||||||
{
|
{
|
||||||
memset(dcraw_matrix, 0, sizeof(dcraw_matrix));
|
memset(dcraw_matrix, 0, sizeof(dcraw_matrix));
|
||||||
memset(raw_crop, 0, sizeof(raw_crop));
|
memset(raw_crop, 0, sizeof(raw_crop));
|
||||||
@@ -310,6 +310,35 @@ CameraConst::parseEntry(void *cJSON_, const char *make_model)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ji = cJSON_GetObjectItem(js, "pdafPattern");
|
||||||
|
|
||||||
|
if (ji) {
|
||||||
|
if (ji->type != cJSON_Array) {
|
||||||
|
fprintf(stderr, "\"pdafPattern\" must be an array\n");
|
||||||
|
goto parse_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ji = ji->child; ji != nullptr; ji = ji->next) {
|
||||||
|
if (ji->type != cJSON_Number) {
|
||||||
|
fprintf(stderr, "\"pdafPattern\" array must contain numbers\n");
|
||||||
|
goto parse_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
cc->pdafPattern.push_back(ji->valueint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ji = cJSON_GetObjectItem(js, "pdafOffset");
|
||||||
|
|
||||||
|
if (ji) {
|
||||||
|
if (ji->type != cJSON_Number) {
|
||||||
|
fprintf(stderr, "\"pdafOffset\" must contain a number\n");
|
||||||
|
goto parse_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
cc->pdafOffset = ji->valueint;
|
||||||
|
}
|
||||||
|
|
||||||
return cc;
|
return cc;
|
||||||
|
|
||||||
parse_error:
|
parse_error:
|
||||||
@@ -345,6 +374,18 @@ CameraConst::get_dcrawMatrix()
|
|||||||
return dcraw_matrix;
|
return dcraw_matrix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
CameraConst::has_pdafPattern()
|
||||||
|
{
|
||||||
|
return pdafPattern.size() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CameraConst::get_pdafPattern(std::vector<int> &pattern)
|
||||||
|
{
|
||||||
|
pattern = pdafPattern;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CameraConst::has_rawCrop()
|
CameraConst::has_rawCrop()
|
||||||
{
|
{
|
||||||
|
@@ -24,7 +24,8 @@ private:
|
|||||||
int white_max;
|
int white_max;
|
||||||
std::map<int, struct camera_const_levels> mLevels[2];
|
std::map<int, struct camera_const_levels> mLevels[2];
|
||||||
std::map<float, float> mApertureScaling;
|
std::map<float, float> mApertureScaling;
|
||||||
|
std::vector<int> pdafPattern;
|
||||||
|
int pdafOffset;
|
||||||
CameraConst();
|
CameraConst();
|
||||||
static bool parseLevels(CameraConst *cc, int bw, void *ji);
|
static bool parseLevels(CameraConst *cc, int bw, void *ji);
|
||||||
static bool parseApertureScaling(CameraConst *cc, void *ji);
|
static bool parseApertureScaling(CameraConst *cc, void *ji);
|
||||||
@@ -33,8 +34,11 @@ private:
|
|||||||
public:
|
public:
|
||||||
static CameraConst *parseEntry(void *cJSON, const char *make_model);
|
static CameraConst *parseEntry(void *cJSON, const char *make_model);
|
||||||
bool has_dcrawMatrix(void);
|
bool has_dcrawMatrix(void);
|
||||||
|
bool has_pdafPattern(void);
|
||||||
void update_dcrawMatrix(const short *other);
|
void update_dcrawMatrix(const short *other);
|
||||||
const short *get_dcrawMatrix(void);
|
const short *get_dcrawMatrix(void);
|
||||||
|
void get_pdafPattern(std::vector<int> &pattern);
|
||||||
|
int get_pdafOffset() {return pdafOffset;}
|
||||||
bool has_rawCrop(void);
|
bool has_rawCrop(void);
|
||||||
void get_rawCrop(int& left_margin, int& top_margin, int& width, int& height);
|
void get_rawCrop(int& left_margin, int& top_margin, int& width, int& height);
|
||||||
bool has_rawMask(int idx);
|
bool has_rawMask(int idx);
|
||||||
|
@@ -2235,7 +2235,11 @@ Camera constants:
|
|||||||
"make_model": "Sony ILCE-6000",
|
"make_model": "Sony ILCE-6000",
|
||||||
"dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
|
"dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
|
||||||
"raw_crop": [ 0, 0, 6024, 4024 ],
|
"raw_crop": [ 0, 0, 6024, 4024 ],
|
||||||
"ranges": { "black": 512, "white": 16300 }
|
"ranges": { "black": 512, "white": 16300 },
|
||||||
|
// detected by hand, using the picture from https://www.dpreview.com/forums/thread/3923513
|
||||||
|
// P 11 P 23 P 17 P 17 P 17 P 23 P 11 P 17 P 17 P 17 P 23 P 11 P 23 P 11 P 17 P 23 P 11 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 23 P 11 P 17 P 11 P 23
|
||||||
|
"pdafPattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
|
||||||
|
"pdafOffset" : 3
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // Quality A
|
{ // Quality A
|
||||||
@@ -2251,6 +2255,18 @@ Camera constants:
|
|||||||
"ranges": { "black": 512, "white": 16300 }
|
"ranges": { "black": 512, "white": 16300 }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // Quality C, only pdaf data
|
||||||
|
"make_model": "Sony ILCE-7M3",
|
||||||
|
// A7III, from https://www.dpreview.com/forums/post/60843139
|
||||||
|
// in the original post:
|
||||||
|
// P 5 P 17 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11
|
||||||
|
//
|
||||||
|
// rotated to match the start of the frame
|
||||||
|
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
|
||||||
|
"pdafPattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420],
|
||||||
|
"pdafOffset" : 9
|
||||||
|
},
|
||||||
|
|
||||||
{ // Quality A, correction for frame width
|
{ // Quality A, correction for frame width
|
||||||
"make_model": "Sony ILCE-7R",
|
"make_model": "Sony ILCE-7R",
|
||||||
"dcraw_matrix": [ 4913,-541,-202,-6130,13513,2906,-1564,2151,7183 ],
|
"dcraw_matrix": [ 4913,-541,-202,-6130,13513,2906,-1564,2151,7183 ],
|
||||||
@@ -2269,7 +2285,12 @@ Camera constants:
|
|||||||
"make_model": "Sony ILCE-9",
|
"make_model": "Sony ILCE-9",
|
||||||
"dcraw_matrix": [ 6389,-1703,-378,-4562,12265,2587,-670,1489,6550 ], // DNG_v9.12 D65
|
"dcraw_matrix": [ 6389,-1703,-378,-4562,12265,2587,-670,1489,6550 ], // DNG_v9.12 D65
|
||||||
"raw_crop": [ 8, 8, 6008, 4008 ], // full raw frame 6048x4024 Dcraw auto identify 6024x4024, jpeg 12,12,6000x4000
|
"raw_crop": [ 8, 8, 6008, 4008 ], // full raw frame 6048x4024 Dcraw auto identify 6024x4024, jpeg 12,12,6000x4000
|
||||||
"ranges": { "black": 512, "white": 16300 }
|
"ranges": { "black": 512, "white": 16300 },
|
||||||
|
// the A9 is the same as the A7III, rotated of 1 position
|
||||||
|
// source: https://www.dpreview.com/forums/post/60857788
|
||||||
|
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
|
||||||
|
"pdafPattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420 ],
|
||||||
|
"pdafOffset" : -7
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // Quality B, correction for frame width
|
{ // Quality B, correction for frame width
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include "pdaflinesfilter.h"
|
#include "pdaflinesfilter.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include "camconst.h"
|
||||||
|
|
||||||
namespace rtengine {
|
namespace rtengine {
|
||||||
|
|
||||||
@@ -128,34 +129,14 @@ PDAFLinesFilter::PDAFLinesFilter(RawImage *ri):
|
|||||||
H_(ri->get_height())
|
H_(ri->get_height())
|
||||||
{
|
{
|
||||||
gthresh_ = new PDAFGreenEqulibrateThreshold(W_, H_);
|
gthresh_ = new PDAFGreenEqulibrateThreshold(W_, H_);
|
||||||
|
|
||||||
if (ri_->get_maker() == "Sony") {
|
CameraConstantsStore* ccs = CameraConstantsStore::getInstance();
|
||||||
if (ri_->get_model() == "ILCE-7M3") {
|
CameraConst *cc = ccs->get(ri_->get_maker().c_str(), ri_->get_model().c_str());
|
||||||
// A7III, from https://www.dpreview.com/forums/post/60843139
|
|
||||||
// in the original post:
|
if (cc) {
|
||||||
// P 5 P 17 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11
|
cc->get_pdafPattern(pattern_);
|
||||||
//
|
if(!pattern_.empty()) {
|
||||||
// rotated to match the start of the frame
|
offset_ = cc->get_pdafOffset();
|
||||||
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
|
|
||||||
pattern_ = {
|
|
||||||
0, 12, 24, 36, 54, 66, 72, 84, 96, 114, 120, 132, 150, 156, 174, 180, 192, 204, 216, 234, 240, 252, 264, 276, 282, 300, 306, 324, 336, 342, 360, 372, 384, 402, 414, 420
|
|
||||||
};
|
|
||||||
offset_ = 9;
|
|
||||||
} else if (ri_->get_model() == "ILCE-6000") {
|
|
||||||
// detected by hand, using the picture from https://www.dpreview.com/forums/thread/3923513
|
|
||||||
// P 11 P 23 P 17 P 17 P 17 P 23 P 11 P 17 P 17 P 17 P 23 P 11 P 23 P 11 P 17 P 23 P 11 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 23 P 11 P 17 P 11 P 23
|
|
||||||
pattern_ = {
|
|
||||||
0, 12, 36, 54, 72, 90, 114, 126, 144, 162, 180, 204, 216, 240, 252, 270, 294, 306, 324, 342, 366, 384, 396, 414, 432, 450, 474, 492, 504, 522, 540, 564, 576, 594, 606, 630
|
|
||||||
};
|
|
||||||
offset_ = 3;
|
|
||||||
} else if (ri_->get_model() == "ILCE-9") {
|
|
||||||
// the A9 is the same as the A7III, rotated of 1 position
|
|
||||||
// source: https://www.dpreview.com/forums/post/60857788
|
|
||||||
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
|
|
||||||
pattern_ = {
|
|
||||||
0, 12, 24, 36, 54, 66, 72, 84, 96, 114, 120, 132, 150, 156, 174, 180, 192, 204, 216, 234, 240, 252, 264, 276, 282, 300, 306, 324, 336, 342, 360, 372, 384, 402, 414, 420
|
|
||||||
};
|
|
||||||
offset_ = -7;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user