Skip to content

Commit

Permalink
init remove_camera_cls
Browse files Browse the repository at this point in the history
  • Loading branch information
Chu-Ping committed Nov 2, 2023
1 parent a103d3c commit 12fb289
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 67 deletions.
32 changes: 16 additions & 16 deletions src/Ricom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,8 @@ void Ricom::init_surface()
exit(EXIT_FAILURE);
}
// SDL surface for CBED image
cbed_log.assign(camera.nx_cam * camera.ny_cam, 0.0);
srf_cbed = SDL_CreateRGBSurface(0, camera.nx_cam, camera.ny_cam, 32, 0, 0, 0, 0);
cbed_log.assign(nx_cam * ny_cam, 0.0);
srf_cbed = SDL_CreateRGBSurface(0, nx_cam, ny_cam, 32, 0, 0, 0, 0);
if (srf_cbed == NULL)
{
std::cout << "Surface could not be created! SDL Error: " << SDL_GetError() << std::endl;
Expand Down Expand Up @@ -318,17 +318,17 @@ template <typename T>
void Ricom::com(std::vector<T> *data, std::array<float, 2> &com)
{
float dose = 0;
std::vector<size_t> sum_x(camera.nx_cam);
std::vector<size_t> sum_y(camera.ny_cam);
sum_x.assign(camera.nx_cam, 0);
sum_y.assign(camera.ny_cam, 0);
std::vector<size_t> sum_x(nx_cam);
std::vector<size_t> sum_y(ny_cam);
sum_x.assign(nx_cam, 0);
sum_y.assign(ny_cam, 0);
com = {0.0, 0.0};

for (int idy = 0; idy < camera.ny_cam; idy++)
for (int idy = 0; idy < ny_cam; idy++)
{
size_t y_nx = idy * camera.nx_cam;
size_t y_nx = idy * nx_cam;
size_t sum_x_temp = 0;
for (int idx = 0; idx < camera.nx_cam; idx++)
for (int idx = 0; idx < nx_cam; idx++)
{
T px = data->data()[y_nx + idx];
swap_endianess(px);
Expand All @@ -341,11 +341,11 @@ void Ricom::com(std::vector<T> *data, std::array<float, 2> &com)

if (dose > 0)
{
for (int i = 0; i < camera.nx_cam; i++)
for (int i = 0; i < nx_cam; i++)
{
com[0] += sum_x[i] * camera.v[i];
}
for (int i = 0; i < camera.ny_cam; i++)
for (int i = 0; i < ny_cam; i++)
{
com[1] += sum_y[i] * camera.u[i];
}
Expand Down Expand Up @@ -587,10 +587,10 @@ void Ricom::plot_cbed(std::vector<T> &cbed_data)
}

float v_rng = v_max - v_min;
for (int ix = 0; ix < camera.ny_cam; ix++)
for (int ix = 0; ix < ny_cam; ix++)
{
int iy_t = camera.v[ix] * camera.nx_cam;
for (int iy = 0; iy < camera.nx_cam; iy++)
int iy_t = camera.v[ix] * nx_cam;
for (int iy = 0; iy < nx_cam; iy++)
{
float vl_f = cbed_log[iy_t + camera.u[iy]];
float val = (vl_f - v_min) / v_rng;
Expand All @@ -605,7 +605,7 @@ inline void Ricom::rescales_recomputes()
{
if (b_recompute_detector)
{
detector.compute_detector(camera.nx_cam, camera.ny_cam, offset);
detector.compute_detector(nx_cam, ny_cam, offset);
b_recompute_detector = false;
}
if (b_recompute_kernel)
Expand Down Expand Up @@ -1150,7 +1150,7 @@ void Ricom::run_reconstruction(RICOM::modes mode)

if (b_vSTEM)
{
detector.compute_detector(camera.nx_cam, camera.ny_cam, offset);
detector.compute_detector(nx_cam, ny_cam, offset);
}

// Compute the integration Kenel
Expand Down
39 changes: 11 additions & 28 deletions src/Ricom.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ class Ricom_kernel
{
public:
// Properties
uint16_t nx_cam;
uint16_t ny_cam;
int kernel_size;
bool b_filter;
std::array<int, 2> kernel_filter_frequency;
Expand Down Expand Up @@ -187,12 +189,11 @@ class Ricom
void reset_file();
void calculate_update_list();
inline void rescales_recomputes();
template <typename T, class CameraInterface>
inline void skip_frames(int n_skip, std::vector<T> &data, CAMERA::Camera<CameraInterface, CAMERA::FRAME_BASED> *camera_fr);
// template <typename T, class CameraInterface>
// inline void skip_frames(int n_skip, std::vector<T> &data, CAMERA::Camera<CameraInterface, CAMERA::FRAME_BASED> *camera_fr);
template <typename T>
inline void swap_endianess(T &val);

template <class CameraInterface>
void line_processor(
size_t &img_num,
std::vector<size_t> &dose_map,
Expand All @@ -202,31 +203,13 @@ class Ricom
size_t &first_frame,
size_t &end_frame,
ProgressMonitor *prog_mon,
CAMERA::Camera<CameraInterface, CAMERA::EVENT_BASED> *camera_spec,
size_t &fr_total_u,
bool &fin,
BoundedThreadPool *pool,
int &processor_line,
int &preprocessor_line
);

template <class CameraInterface>
void process_data_process(
size_t &img_num,
int idxx,
std::vector<size_t> &dose_map,
std::vector<size_t> &sumx_map,
std::vector<size_t> &sumy_map,
std::vector<uint16_t> &frame,
int &acc_cbed,
size_t &first_frame,
size_t &end_frame,
CAMERA::Camera<CameraInterface, CAMERA::EVENT_BASED> *camera_spec,
ProgressMonitor *prog_mon,
size_t fr_total_u,
bool &fin,
BoundedThreadPool *pool
);
void icom_group_decompose(int idxx);
void icom_group_classical(int idxx);

Expand Down Expand Up @@ -255,7 +238,6 @@ class Ricom
public:
SocketConnector socket;
std::string file_path;
CAMERA::Camera_BASE camera;
RICOM::modes mode;
bool b_print2file;
int redraw_interval;
Expand Down Expand Up @@ -320,16 +302,17 @@ class Ricom
void draw_stem_image(int y0, int ye);
void draw_e_field_image();
void draw_e_field_image(int y0, int ye);
template <class CameraInterface>
// template <class CameraInterface>
void run_reconstruction(RICOM::modes mode);
void reset();
template <typename T>
void plot_cbed(std::vector<T> &data);
template <typename T, class CameraInterface>
void process_data(CAMERA::Camera<CameraInterface, CAMERA::FRAME_BASED> *camera);
template <class CameraInterface>
void process_data(CAMERA::Camera<CameraInterface, CAMERA::EVENT_BASED> *camera);
enum CAMERA::Camera_model select_mode_by_file(const char *filename);
// template <typename T, class CameraInterface>
// void process_data(CAMERA::Camera<CameraInterface, CAMERA::FRAME_BASED> *camera);
// template <class CameraInterface>
// void process_data(CAMERA::Camera<CameraInterface, CAMERA::EVENT_BASED> *camera);
// enum CAMERA::Camera_model select_mode_by_file(const char *filename);
void process_data();

// Constructor
Ricom();
Expand Down
39 changes: 19 additions & 20 deletions src/RunGUI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ inline void bind_tex(SDL_Surface *srf, GLuint tex_id);
// GUI implementation //
////////////////////////////////////////////////

int run_gui(Ricom *ricom, CAMERA::Default_configurations &hardware_configurations)
int run_gui(Ricom *ricom)
{
std::thread run_thread;
std::thread py_thread;
Expand Down Expand Up @@ -207,18 +207,18 @@ int run_gui(Ricom *ricom, CAMERA::Default_configurations &hardware_configuration
ImGuiINI::check_ini_setting(ini_cfg, "Hardware", "Image Refresh Interval [ms]", ricom->redraw_interval);
// Merlin Settings
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "Live Interface Menu", b_merlin_live_menu);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "nx", hardware_configurations[CAMERA::MERLIN].nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "ny", hardware_configurations[CAMERA::MERLIN].ny_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "nx", ricom->nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "ny", ricom->ny_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "com_port", merlin_settings.com_port);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "data_port", ricom->socket.port);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "ip", ricom->socket.ip);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "python_path", python_path);
// Timepix Settings
ImGuiINI::check_ini_setting(ini_cfg, "Timepix", "nx", hardware_configurations[CAMERA::MERLIN].nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Timepix", "ny", hardware_configurations[CAMERA::MERLIN].ny_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Timepix", "nx", ricom->nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Timepix", "ny", ricom->ny_cam);
// Cheetah Settings
ImGuiINI::check_ini_setting(ini_cfg, "Cheetah", "nx", hardware_configurations[CAMERA::CHEETAH].nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Cheetah", "ny", hardware_configurations[CAMERA::CHEETAH].ny_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Cheetah", "nx", ricom->nx_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Cheetah", "ny", ricom->ny_cam);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "data_port", ricom->socket.port);
ImGuiINI::check_ini_setting(ini_cfg, "Merlin", "ip", ricom->socket.ip);

Expand Down Expand Up @@ -316,13 +316,13 @@ int run_gui(Ricom *ricom, CAMERA::Default_configurations &hardware_configuration
{
ini_cfg["Merlin"]["Live Interface Menu"] = std::to_string(b_merlin_live_menu);
}
if (ImGui::DragScalar("nx Merlin", ImGuiDataType_U16, &hardware_configurations[CAMERA::MERLIN].nx_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("nx Merlin", ImGuiDataType_U16, &(ricom->nx_cam), 1, &drag_min_pos))
{
ini_cfg["Merlin"]["nx"] = std::to_string(hardware_configurations[CAMERA::MERLIN].nx_cam);
ini_cfg["Merlin"]["nx"] = std::to_string(ricom->nx_cam);
}
if (ImGui::DragScalar("ny Merlin", ImGuiDataType_U16, &hardware_configurations[CAMERA::MERLIN].ny_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("ny Merlin", ImGuiDataType_U16, &(ricom->ny_cam), 1, &drag_min_pos))
{
ini_cfg["Merlin"]["ny"] = std::to_string(hardware_configurations[CAMERA::MERLIN].ny_cam);
ini_cfg["Merlin"]["ny"] = std::to_string(ricom->ny_cam);
}
if (ImGui::InputText("IP", &ricom->socket.ip))
{
Expand All @@ -344,23 +344,23 @@ int run_gui(Ricom *ricom, CAMERA::Default_configurations &hardware_configuration

ImGui::Text("Timepix Camera");
// ImGui::Checkbox("Live Interface Menu", &b_timepix_live_menu);
if (ImGui::DragScalar("nx Timepix", ImGuiDataType_U16, &hardware_configurations[CAMERA::TIMEPIX].nx_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("nx Timepix", ImGuiDataType_U16, &(ricom->nx_cam), 1, &drag_min_pos))
{
ini_cfg["Timepix"]["nx"] = std::to_string(hardware_configurations[CAMERA::TIMEPIX].nx_cam);
ini_cfg["Timepix"]["nx"] = std::to_string(ricom->nx_cam);
}
if (ImGui::DragScalar("ny Timepix", ImGuiDataType_U16, &hardware_configurations[CAMERA::TIMEPIX].ny_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("ny Timepix", ImGuiDataType_U16, &(ricom->ny_cam), 1, &drag_min_pos))
{
ini_cfg["Timepix"]["ny"] = std::to_string(hardware_configurations[CAMERA::TIMEPIX].ny_cam);
ini_cfg["Timepix"]["ny"] = std::to_string((ricom->ny_cam));
}

ImGui::Text("Cheetah Camera");
if (ImGui::DragScalar("nx Cheetah", ImGuiDataType_U16, &hardware_configurations[CAMERA::CHEETAH].nx_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("nx Cheetah", ImGuiDataType_U16, &(ricom->nx_cam), 1, &drag_min_pos))
{
ini_cfg["Cheetah"]["nx"] = std::to_string(hardware_configurations[CAMERA::CHEETAH].nx_cam);
ini_cfg["Cheetah"]["nx"] = std::to_string(ricom->nx_cam);
}
if (ImGui::DragScalar("ny Cheetah", ImGuiDataType_U16, &hardware_configurations[CAMERA::CHEETAH].ny_cam, 1, &drag_min_pos))
if (ImGui::DragScalar("ny Cheetah", ImGuiDataType_U16, &(ricom->ny_cam), 1, &drag_min_pos))
{
ini_cfg["Cheetah"]["ny"] = std::to_string(hardware_configurations[CAMERA::CHEETAH].ny_cam);
ini_cfg["Cheetah"]["ny"] = std::to_string(ricom->ny_cam);
}
ImGui::EndMenu();
}
Expand Down Expand Up @@ -646,7 +646,6 @@ int run_gui(Ricom *ricom, CAMERA::Default_configurations &hardware_configuration
filename = openFileDialog.GetSelected().string();
b_file_selected = true;
openFileDialog.ClearSelected();
ricom->camera = hardware_configurations[ricom->select_mode_by_file(filename.c_str())];
}
if (b_file_selected)
{
Expand Down
5 changes: 2 additions & 3 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,18 @@ int main(int argc, char *argv[])
{

Ricom ricom;
CAMERA::Default_configurations hardware_configurations;

if (argc == 1)
{
#ifdef _WIN32
FreeConsole();
#endif
log2file(&ricom);
return run_gui(&ricom, hardware_configurations);
return run_gui(&ricom);
}
else
{
return run_cli(argc, argv, &ricom, hardware_configurations);
return run_cli(argc, argv, &ricom);
}
}

Expand Down

0 comments on commit 12fb289

Please sign in to comment.