pixelshift: add preliminary constants and camconst.json entry for Sony ILCE-7RM3, kudos to @iliasg for providing them
This commit is contained in:
@@ -2285,6 +2285,13 @@ Camera constants:
|
|||||||
"ranges": { "black": 800, "white": 16300 }
|
"ranges": { "black": 800, "white": 16300 }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // Quality C,
|
||||||
|
"make_model": "Sony ILCE-7RM3",
|
||||||
|
"dcraw_matrix": [ 6640,-1847,-503,-5238,13010,2474,-993,1673,6527 ], // DNG_v10.1 D65
|
||||||
|
"raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage
|
||||||
|
"ranges": { "black": 512, "white": 16300 }
|
||||||
|
},
|
||||||
|
|
||||||
{ // Quality C, No proper color data, beta samples, frame set to official jpeg,
|
{ // Quality C, No proper color data, beta samples, frame set to official jpeg,
|
||||||
"make_model": [ "XIAOYI M1", "YI TECHNOLOGY M1" ],
|
"make_model": [ "XIAOYI M1", "YI TECHNOLOGY M1" ],
|
||||||
"dcraw_matrix": [ 7158,-1911,-606,-3603,10669,2530,-659,1236,5530 ], // XIAO YI DNG D65
|
"dcraw_matrix": [ 7158,-1911,-606,-3603,10669,2530,-659,1236,5530 ], // XIAO YI DNG D65
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Algorithm for Pentax Pixel Shift raw files with motion detection
|
// Algorithm for Pentax/Sony Pixel Shift raw files with motion detection
|
||||||
//
|
//
|
||||||
// Copyright (C) 2016 - 2017 Ingo Weyrich <heckflosse67@gmx.de>
|
// Copyright (C) 2016 - 2017 Ingo Weyrich <heckflosse67@gmx.de>
|
||||||
//
|
//
|
||||||
@@ -504,6 +504,42 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA
|
|||||||
|
|
||||||
static const float ePerIsoK70 = 0.5f;
|
static const float ePerIsoK70 = 0.5f;
|
||||||
|
|
||||||
|
// preliminary ILCE-7RM3 data, good fidelity except from A) small innaccuracy at places
|
||||||
|
// due to integer scaling quantization, B) much different noise behavior of PDAF pixels
|
||||||
|
static const float nReadILCE7RM3[] = { 4.2f, // ISO 100
|
||||||
|
3.9f, // ISO 125
|
||||||
|
3.6f, // ISO 160
|
||||||
|
3.55f, // ISO 200
|
||||||
|
3.5f, // ISO 250
|
||||||
|
3.45f, // ISO 320
|
||||||
|
3.35f, // ISO 400
|
||||||
|
3.3f, // ISO 500
|
||||||
|
1.3f, // ISO 640
|
||||||
|
1.2f, // ISO 800
|
||||||
|
1.2f, // ISO 1000
|
||||||
|
1.2f, // ISO 1250
|
||||||
|
1.15f, // ISO 1600
|
||||||
|
1.2f, // ISO 2000
|
||||||
|
1.15f, // ISO 2500
|
||||||
|
1.15f, // ISO 3200
|
||||||
|
1.1f, // ISO 4000
|
||||||
|
1.1f, // ISO 5000
|
||||||
|
1.05f, // ISO 6400
|
||||||
|
1.05f, // ISO 8000
|
||||||
|
1.05f, // ISO 10000
|
||||||
|
1.0f, // ISO 12800
|
||||||
|
1.0f, // ISO 16000
|
||||||
|
1.0f, // ISO 20000
|
||||||
|
1.0f, // ISO 25600
|
||||||
|
1.0f, // ISO 32000
|
||||||
|
1.0f, // ISO 40000
|
||||||
|
1.0f, // ISO 51200
|
||||||
|
1.1f, // ISO 64000
|
||||||
|
1.1f, // ISO 80000
|
||||||
|
1.1f, // ISO 102400
|
||||||
|
};
|
||||||
|
static const float ePerIsoILCE7RM3 = 0.8f;
|
||||||
|
|
||||||
if(plistener) {
|
if(plistener) {
|
||||||
plistener->setProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)));
|
plistener->setProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)));
|
||||||
plistener->setProgress(0.0);
|
plistener->setProgress(0.0);
|
||||||
@@ -530,6 +566,9 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA
|
|||||||
} else if(model.find("K-1") != string::npos) {
|
} else if(model.find("K-1") != string::npos) {
|
||||||
nRead = nReadK1[nReadIndex];
|
nRead = nReadK1[nReadIndex];
|
||||||
eperIsoModel = ePerIsoK1;
|
eperIsoModel = ePerIsoK1;
|
||||||
|
} else if(model.find("ILCE-7RM3") != string::npos) {
|
||||||
|
nRead = nReadILCE7RM3[nReadIndex];
|
||||||
|
eperIsoModel = ePerIsoILCE7RM3;
|
||||||
} else { // as long as we don't have values for Pentax KP, we use the values from K-70
|
} else { // as long as we don't have values for Pentax KP, we use the values from K-70
|
||||||
nRead = nReadK70[nReadIndex];
|
nRead = nReadK70[nReadIndex];
|
||||||
eperIsoModel = ePerIsoK70;
|
eperIsoModel = ePerIsoK70;
|
||||||
|
Reference in New Issue
Block a user