pixelshift: add preliminary constants and camconst.json entry for Sony ILCE-7RM3, kudos to @iliasg for providing them

This commit is contained in:
heckflosse
2017-12-13 20:34:18 +01:00
parent 816fbef394
commit a17084f638
2 changed files with 47 additions and 1 deletions

View File

@@ -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

View File

@@ -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;