Exemple #1
0
/*
* Lion Constructor
*/
Lion::Lion(HashFunction* hash, StreamCipher* cipher, size_t bs) :
   m_block_size(std::max<size_t>(2*hash->output_length() + 1, bs)),
   m_hash(hash),
   m_cipher(cipher)
   {
   if(2*left_size() + 1 > m_block_size)
      throw Invalid_Argument(name() + ": Chosen block size is too small");

   if(!m_cipher->valid_keylength(left_size()))
      throw Invalid_Argument(name() + ": This stream/hash combo is invalid");

   m_key1.resize(left_size());
   m_key2.resize(left_size());
   }
  void
  calibrate_stereo(const observation_pts_v_t& left_points, const observation_pts_v_t& right_points,
                   const object_pts_v_t& object_points, const cv::Size& image_size, PinholeCameraModel& left,
                   PinholeCameraModel& right)
  {
    PinholeCameraModel camera;
    StereoCameraModel scam;
    std::vector<cv::Mat> rvecs, tvecs;
    cv::Mat K_left, K_right, D_right, D_left, R, T, E, F;
    int flags =cv::CALIB_FIX_PRINCIPAL_POINT| cv::CALIB_FIX_ASPECT_RATIO /*| cv::CALIB_ZERO_TANGENT_DIST|cv::CALIB_FIX_PRINCIPAL_POINT| cv::CALIB_FIX_K1 | cv::CALIB_FIX_K2 |cv::CALIB_FIX_K3*/;
    cv::Size left_size(image_size), right_size(image_size);
    double left_rms = cv::calibrateCamera(object_points, left_points, left_size, K_left, D_left, rvecs, tvecs, flags);
    double right_rms = cv::calibrateCamera(object_points, right_points, right_size, K_right, D_right, rvecs, tvecs,
                                           flags);

    double stereo_rms = cv::stereoCalibrate(object_points, left_points, right_points, K_left, D_left, K_right, D_right,
                                            left_size, R, T, E, F,
                                            cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, 500, 1e-6),
                                            cv::CALIB_FIX_INTRINSIC | flags);

    std::cout << "image size:" << image_size.width << ":" << image_size.height << std::endl;
    std::cout << "R:" << R << std::endl;
    std::cout << "T:" << T << std::endl;
    std::cout << "D:" << D_left << std::endl;
    std::cout << "left rms:" << left_rms << " right rms:" << right_rms << " stereo rms:" << stereo_rms << std::endl;
    left.setParams(left_size, K_left, D_left, cv::Mat_<double>::eye(3, 3), K_left);
    right.setParams(right_size, K_right, D_right, cv::Mat_<double>::eye(3, 3), K_right);
    left.writeCalibration("left.yml");
    right.writeCalibration("right.yml");
    Eigen::Matrix3d Re;
    Eigen::Vector3d Te;
    Eigen::Matrix4d Pe = Eigen::Matrix4d::Identity();
    cv2eigen(R, Re);
    cv2eigen(T.t(), Te);
    std::cout << Te << std::endl;
    Pe.block(0, 0, 3, 3) = Re;
    Pe.block(0, 3, 3, 1) = Te;
    Pose P;
    P.transform.matrix() = Pe;
    scam.setParams(left, right, P);
    scam.writeCalibration("stereo.yml");
  }
int		char_buffer(char *txt, t_buffer *buff)
{
  int		len;
  size_t	size;
  size_t	i;

  if (txt == NULL || (len = strlen(txt)) > BUFF_LEN)
    return (-1);
  size = left_size(buff);
  if (size < strlen(txt))
    return (-1);
  i = 0;
  while (i != strlen(txt))
    {
      ((char *)buff->buff)[buff->e] = txt[i];
      buff->e++;
      if (buff->e == P_MAX + 1)
	buff->e = 0;
      i++;
    }
  return (0);
}
Exemple #4
0
PerfPanel::PerfPanel(wxWindow *frame) : wxPanel(frame)
{
#define IMG(fn) wxBitmap(wxString("./Images/")+wxString(fn)+wxString(".bmp"),wxBITMAP_TYPE_ANY)
int panel_border=10;
	UpdateFS_src();
	wxSizer* sz = new wxBoxSizer(wxVERTICAL);
	sz->AddSpacer(panel_border);
	wxSize left_size(100,30);
	wxSizer* sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);

	wxButton*btn_up = new wxBitmapButton(this,5,IMG("small_add"));
	btn_up->SetToolTip(MY_TXT("Add selected rendering method","Добавить выбранный метод рендеринга"));
	btn_up->Show(0);


	m_box_rmode = new wxChoice(this,3);
	for(int i=0;i<CT::iso->rendering_methods.size();i++)
	{
		m_box_rmode->Append(CT::iso->rendering_methods[i]->caption);
	}
	m_box_rmode->Select(0);
	//sz->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering method","Метод рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_box_rmode,1,wxGROW);
	sz1->Add(btn_up,0,wxSTRETCH_NOT);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);
	sz->AddSpacer(panel_border);

	//sz->Add(m_box_rmode,0,wxEXPAND);
//
	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_box_rtype = new wxChoice(this,2);
	m_box_rtype->Append(MY_TXT("Permanent","Постоянный"));
	m_box_rtype->Append(MY_TXT("When something has changed","При изменениях"));
	m_box_rtype->Append(MY_TXT("Frames accumulation","Накопление кадров"));
	//m_box_rtype->Append(MY_TXT("Use LoD when changing","Использовать LoD при изменении"));
	m_box_rtype->Select(CT::RenderingType);
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering type","Тип рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_box_rtype,1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);
//
	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_slider_z[0] = new wxSlider(this,1,100,1,500);
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering quality","Качество рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_slider_z[0],1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);

	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_slider_z[2] = new wxSlider(this,8,100,0,400);
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Interaction quality","???"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_slider_z[2],1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);

	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_slider_z[1] = new wxSlider(this,6,50,0,100);
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Fast resolution","Быстрое разрешение"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_slider_z[1],1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);


	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_box_shading_type = new wxChoice(this,6);
	m_box_shading_type->Append(MY_TXT("No","Нет"));
	m_box_shading_type->Append(MY_TXT("Phong","Фонг"));
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Shading model","Модель затенения"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_box_shading_type,1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);
/*
	m_box_shading_type = new wxChoice(this,6);
	m_box_shading_type->Append(MY_TXT("No","Нет"));
	m_box_shading_type->Append(MY_TXT("Phong","Фонг"));
	sz->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Shading model","Модель затенения"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz->Add(m_box_shading_type,1,wxGROW);
*/
	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	m_box_tf = new wxChoice(this,7);
	m_box_tf->Append(MY_TXT("1D Gray","1D Серая"));
	m_box_tf->Append(MY_TXT("1D Colored","1D цветная"));
	sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Transfer function","Раскраска"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT);
	sz1->Add(m_box_tf,1,wxGROW);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);

//	m_check_box_autofps = new wxCheckBox(this,4,MY_TXT("Permanent rendering","Постоянный рендеринг"),ster+wxPoint(0,100));
	m_check_use_accel_struct = new wxCheckBox(this,4,MY_TXT("Use acceleration structure","Использовать ускоряющую структуру"));
	m_check_use_accel_struct->Show(0);
	m_check_use_cubic_filt = new wxCheckBox(this,4,MY_TXT("Tricubic filtering","Трикубическая фильтрация"));
	m_check_bicubic_filtering = new wxCheckBox(this,4,MY_TXT("Bicubic filtering","Бикубическая фильтрация"));

	sz->Add(m_check_use_accel_struct,0,wxSTRETCH_NOT);

	sz1 = new wxBoxSizer(wxHORIZONTAL);
	sz1->AddSpacer(panel_border);
	sz1->Add(m_check_use_cubic_filt,0,wxSTRETCH_NOT);
	sz1->Add(m_check_bicubic_filtering,0,wxSTRETCH_NOT);
	sz1->AddSpacer(panel_border);
	sz->Add(sz1,0,wxEXPAND);
	
	SetSizer(sz);
	
}