|
|
|
|
@ -1,9 +1,13 @@
@@ -1,9 +1,13 @@
|
|
|
|
|
using System; |
|
|
|
|
#define VLADIMIR |
|
|
|
|
|
|
|
|
|
using System; |
|
|
|
|
using UTIL; |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Ноавя версия ПИВ 1.23 |
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace PIV |
|
|
|
|
{ |
|
|
|
|
public static class CONST |
|
|
|
|
@ -2182,6 +2186,12 @@ namespace PIV
@@ -2182,6 +2186,12 @@ namespace PIV
|
|
|
|
|
/// </summary> |
|
|
|
|
public static class AZUM |
|
|
|
|
{ |
|
|
|
|
public static int WF { get => (int)Wfull; set => Wfull = (double)value; } |
|
|
|
|
public static int HF { get => (int)Hfull; set => Hfull = (double)value; } |
|
|
|
|
private static Double Wfull; // = (Double)WF; |
|
|
|
|
private static Double Hfull; // = (Double)HF; |
|
|
|
|
//const Double Wfull = 4072.0; |
|
|
|
|
//const Double Hfull = 3064.0; |
|
|
|
|
/* |
|
|
|
|
private static void pix2ang() |
|
|
|
|
{ |
|
|
|
|
@ -2272,31 +2282,41 @@ namespace PIV
@@ -2272,31 +2282,41 @@ namespace PIV
|
|
|
|
|
//% w - количество столбцов изображения |
|
|
|
|
//% h - количество строк изображения |
|
|
|
|
//sAZUM retu; |
|
|
|
|
if (WF == 0 || HF == 0) |
|
|
|
|
{ |
|
|
|
|
throw new Exception("Не заданы значения размера матрицы!"); |
|
|
|
|
} |
|
|
|
|
Double w_full = Wfull; |
|
|
|
|
Double h_full = Hfull; |
|
|
|
|
|
|
|
|
|
Double w_full = 4072.0; |
|
|
|
|
Double h_full = 3064.0; |
|
|
|
|
|
|
|
|
|
//#if DEBUG |
|
|
|
|
// Console.WriteLine($"{Util.printdatetime(false)}{w_full} {h_full}"); |
|
|
|
|
//#endif |
|
|
|
|
#if VLADIMIR |
|
|
|
|
Double focus_meters = 27.5e-3; |
|
|
|
|
Double pixel_size_meters = 3.2e-6; //22.5'' |
|
|
|
|
#else |
|
|
|
|
Double focus_meters = 12e-3; |
|
|
|
|
Double pixel_size_meters = 1.55e-6; |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
Double rad2deg = (180.0 / (Double)Math.PI); |
|
|
|
|
|
|
|
|
|
Double f = focus_meters / pixel_size_meters; |
|
|
|
|
//Double xc_full = 0.5f * w_full; |
|
|
|
|
//Double yc_full = 0.5f * h_full; |
|
|
|
|
|
|
|
|
|
Double xc_full = 0.5f * w_full; |
|
|
|
|
Double yc_full = 0.5f * h_full; |
|
|
|
|
Double yc_full = (6.0 / 42.0) * h_full; |
|
|
|
|
|
|
|
|
|
Double x_full = (X + 0.5) * w_full / W; |
|
|
|
|
Double y_full = (Y + 0.5) * h_full / H; |
|
|
|
|
|
|
|
|
|
Double x_ohf = x_full - xc_full; |
|
|
|
|
Double y_ohf = y_full - yc_full; |
|
|
|
|
Double z_ohf = f; |
|
|
|
|
|
|
|
|
|
Double rho = (Double)Math.Sqrt(x_ohf * x_ohf + z_ohf * z_ohf); |
|
|
|
|
A = (Double)Math.Atan2(x_ohf, z_ohf) * rad2deg; |
|
|
|
|
U = (Double)(-Math.Atan2(y_ohf, rho) * rad2deg); |
|
|
|
|
} |
|
|
|
|
public static void pix2ang(ref float A, ref float U, float W, float H, float X, float Y) |
|
|
|
|
public static void p2a(ref Double A, ref Double U, Double W, Double H, Double X, Double Y) |
|
|
|
|
{ |
|
|
|
|
//% (x, y) - координаты центра пикселя изображения |
|
|
|
|
//% начало O = (0, 0) системы координат изображения находится |
|
|
|
|
@ -2307,18 +2327,75 @@ namespace PIV
@@ -2307,18 +2327,75 @@ namespace PIV
|
|
|
|
|
//% w - количество столбцов изображения |
|
|
|
|
//% h - количество строк изображения |
|
|
|
|
//sAZUM retu; |
|
|
|
|
if (WF == 0 || HF == 0) |
|
|
|
|
{ |
|
|
|
|
throw new Exception("Не заданы значения размера матрицы!"); |
|
|
|
|
} |
|
|
|
|
Double w_full = Wfull; |
|
|
|
|
Double h_full = Hfull; |
|
|
|
|
|
|
|
|
|
float w_full = (float)4072.0; |
|
|
|
|
float h_full = (float)3064.0; |
|
|
|
|
//#if DEBUG |
|
|
|
|
// Console.WriteLine($"{Util.printdatetime(false)}{w_full} {h_full}"); |
|
|
|
|
//#endif |
|
|
|
|
#if VLADIMIR |
|
|
|
|
Double focus_meters = 27.5e-3; |
|
|
|
|
Double pixel_size_meters = 3.2e-6; //22.5'' |
|
|
|
|
#else |
|
|
|
|
Double focus_meters = 12e-3; |
|
|
|
|
Double pixel_size_meters = 1.55e-6; |
|
|
|
|
#endif |
|
|
|
|
Double rad2deg = (180.0 / (Double)Math.PI); |
|
|
|
|
Double f = focus_meters / pixel_size_meters; |
|
|
|
|
//Double xc_full = 0.5f * w_full; |
|
|
|
|
//Double yc_full = 0.5f * h_full; |
|
|
|
|
|
|
|
|
|
float focus_meters = 12e-3F; |
|
|
|
|
float pixel_size_meters = 1.55e-6F; |
|
|
|
|
Double xc_full = 0.5f * w_full; |
|
|
|
|
Double yc_full = (6.0 / 42.0) * h_full; |
|
|
|
|
|
|
|
|
|
float rad2deg = (180.0F / (float)Math.PI); |
|
|
|
|
Double x_full = (X + 0.5) * w_full / W; |
|
|
|
|
Double y_full = (Y + 0.5) * h_full / H; |
|
|
|
|
Double x_ohf = x_full - xc_full; |
|
|
|
|
Double y_ohf = y_full - yc_full; |
|
|
|
|
Double z_ohf = f; |
|
|
|
|
Double rho = (Double)Math.Sqrt(x_ohf * x_ohf + z_ohf * z_ohf); |
|
|
|
|
A = (Double)Math.Atan2(x_ohf, z_ohf) * rad2deg; |
|
|
|
|
U = (Double)(-Math.Atan2(y_ohf, rho) * rad2deg); |
|
|
|
|
} |
|
|
|
|
public static void pix2ang(ref float A, ref float U, float W, float H, float X, float Y) |
|
|
|
|
{ |
|
|
|
|
//% (x, y) - координаты центра пикселя изображения |
|
|
|
|
//% начало O = (0, 0) системы координат изображения находится |
|
|
|
|
//% в центре левого верхнего пикселя |
|
|
|
|
//% ось OX направлена вправо по возрастанию номеров столбцов |
|
|
|
|
//% ось OY направлена вниз по возрастанию номеров строк |
|
|
|
|
//% |
|
|
|
|
//% w - количество столбцов изображения |
|
|
|
|
//% h - количество строк изображения |
|
|
|
|
//sAZUM retu; |
|
|
|
|
|
|
|
|
|
if (WF == 0 || HF == 0) |
|
|
|
|
{ |
|
|
|
|
throw new Exception("Не заданы значения размера матрицы!"); |
|
|
|
|
} |
|
|
|
|
float w_full = (float)Wfull; |
|
|
|
|
float h_full = (float)Hfull; |
|
|
|
|
//#if DEBUG |
|
|
|
|
// Console.WriteLine($"{Util.printdatetime(false)}{w_full} {h_full}"); |
|
|
|
|
//#endif |
|
|
|
|
#if VLADIMIR |
|
|
|
|
float focus_meters = 27.5e-3F; |
|
|
|
|
float pixel_size_meters = 3.2e-6F; //22.5'' |
|
|
|
|
#else |
|
|
|
|
float focus_meters = 12e-3; |
|
|
|
|
float pixel_size_meters = 1.55e-6; |
|
|
|
|
#endif |
|
|
|
|
float rad2deg = (180.0F / (float)Math.PI); |
|
|
|
|
float f = focus_meters / pixel_size_meters; |
|
|
|
|
//float xc_full = 0.5f * w_full; |
|
|
|
|
//float yc_full = 0.5f * h_full; |
|
|
|
|
|
|
|
|
|
float xc_full = 0.5f * w_full; |
|
|
|
|
float yc_full = 0.5f * h_full; |
|
|
|
|
float yc_full = (6.0F / 42.0F) * h_full; |
|
|
|
|
|
|
|
|
|
float x_full = (float)(X + 0.5) * w_full / W; |
|
|
|
|
float y_full = (float)(Y + 0.5) * h_full / H; |
|
|
|
|
@ -2345,17 +2422,29 @@ namespace PIV
@@ -2345,17 +2422,29 @@ namespace PIV
|
|
|
|
|
//% w - количество столбцов изображения, double |
|
|
|
|
//% h - количество строк изображения, double |
|
|
|
|
|
|
|
|
|
Double w_full = (Double)(4072); |
|
|
|
|
Double h_full = (Double)(3064); |
|
|
|
|
|
|
|
|
|
Double focus_meters = (Double)(12e-3); |
|
|
|
|
Double pixel_size_meters = (Double)(1.55e-6); |
|
|
|
|
|
|
|
|
|
if (WF == 0 || HF == 0) |
|
|
|
|
{ |
|
|
|
|
throw new Exception("Не заданы значения размера матрицы!"); |
|
|
|
|
} |
|
|
|
|
Double w_full = (Double)Wfull; |
|
|
|
|
Double h_full = (Double)Hfull; |
|
|
|
|
//#if DEBUG |
|
|
|
|
// Console.WriteLine($"{Util.printdatetime(false)}{w_full} {h_full}"); |
|
|
|
|
//#endif |
|
|
|
|
#if VLADIMIR |
|
|
|
|
Double focus_meters = 27.5e-3; |
|
|
|
|
Double pixel_size_meters = 3.2e-6; //22.5'' |
|
|
|
|
#else |
|
|
|
|
Double focus_meters = 12e-3; |
|
|
|
|
Double pixel_size_meters = 1.55e-6; |
|
|
|
|
#endif |
|
|
|
|
Double deg2rad = (Double)(Math.PI / 180.0); //% pi = 3.14... |
|
|
|
|
//float rad2deg = (180.0f /3.1415926f); |
|
|
|
|
Double f = focus_meters / pixel_size_meters; |
|
|
|
|
Double xc_full = 0.5 * w_full; |
|
|
|
|
Double yc_full = 0.5 * h_full; |
|
|
|
|
|
|
|
|
|
//Double xc_full = 0.5 * w_full; |
|
|
|
|
//Double yc_full = 0.5 * h_full; |
|
|
|
|
Double xc_full = 0.5f * w_full; |
|
|
|
|
Double yc_full = (6.0 / 42.0) * h_full; |
|
|
|
|
|
|
|
|
|
//_au.A = _au.A * deg2rad; |
|
|
|
|
//_au.U = _au.U * deg2rad; |
|
|
|
|
@ -2387,17 +2476,32 @@ namespace PIV
@@ -2387,17 +2476,32 @@ namespace PIV
|
|
|
|
|
//% w - количество столбцов изображения, double |
|
|
|
|
//% h - количество строк изображения, double |
|
|
|
|
|
|
|
|
|
float w_full = 4072F; |
|
|
|
|
float h_full = 3064F; |
|
|
|
|
if (WF == 0 || HF == 0) |
|
|
|
|
{ |
|
|
|
|
throw new Exception("Не заданы значения размера матрицы!"); |
|
|
|
|
} |
|
|
|
|
float w_full = (float)Wfull; |
|
|
|
|
float h_full = (float)Hfull; |
|
|
|
|
#if DEBUG |
|
|
|
|
Console.WriteLine($"{Util.printdatetime(false)}{w_full} {h_full}"); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
float focus_meters = 12e-3F; |
|
|
|
|
float pixel_size_meters = 1.55e-6F; |
|
|
|
|
#if VLADIMIR |
|
|
|
|
float focus_meters = 27.5e-3F; |
|
|
|
|
float pixel_size_meters = 3.2e-6F; //22.5'' |
|
|
|
|
#else |
|
|
|
|
float focus_meters = 12e-3; |
|
|
|
|
float pixel_size_meters = 1.55e-6; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
float deg2rad = (float)(Math.PI / 180.0); //% pi = 3.14... |
|
|
|
|
//float rad2deg = (180.0f /3.1415926f); |
|
|
|
|
float f = focus_meters / pixel_size_meters; |
|
|
|
|
float xc_full = 0.5F * w_full; |
|
|
|
|
float yc_full = 0.5F * h_full; |
|
|
|
|
|
|
|
|
|
//float xc_full = 0.5F * w_full; |
|
|
|
|
//float yc_full = 0.5F * h_full; |
|
|
|
|
float xc_full = 0.5f * w_full; |
|
|
|
|
float yc_full = (6.0F / 42.0F) * h_full; |
|
|
|
|
|
|
|
|
|
//_au.A = _au.A * deg2rad; |
|
|
|
|
//_au.U = _au.U * deg2rad; |
|
|
|
|
|