Changeset 671 for trunk/src/geometry_calib.m
- Timestamp:
- Jul 31, 2013, 11:11:55 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/geometry_calib.m
r663 r671 50 50 % Edit the above text to modify the response to help geometry_calib 51 51 52 % Last Modified by GUIDE v2.5 05-Jul-2013 08:29:0752 % Last Modified by GUIDE v2.5 31-Jul-2013 23:03:18 53 53 54 54 % Begin initialization code - DO NOT edit … … 123 123 end 124 124 set(handles.ListCoord,'Data',[]) 125 % set(handles.ListCoord,'Data',{[] [] [] [] [] []})126 125 if exist(inputfile,'file') 127 126 Heading=loadfile(handles,inputfile);% load data from the xml file … … 215 214 Data(index,6)=1;% indicate in the list the point with max deviation (possible mistake) 216 215 set(handles.ListCoord,'Data',Data)% indicate in the list the point with max deviation (possible mistake) 217 %ListCoord_Callback(hObject, eventdata, handles)218 216 figure(handles.geometry_calib) 219 217 … … 264 262 %------------------------------------------------------------------------ 265 263 %% read the current calibration points 266 %Coord_cell=get(handles.ListCoord,'Data');267 %Object=read_geometry_calib(Coord_cell);268 264 Coord=get(handles.ListCoord,'Data'); 269 265 Coord(:,6)=[]; … … 701 697 ErrorRms=mean(ErrorRms); 702 698 703 % ------------------------------------------------------------------------704 function XImage_Callback(hObject, eventdata, handles)705 % ------------------------------------------------------------------------706 update_list(hObject, eventdata,handles)707 708 % ------------------------------------------------------------------------709 function YImage_Callback(hObject, eventdata, handles)710 % ------------------------------------------------------------------------711 update_list(hObject, eventdata,handles)699 % %------------------------------------------------------------------------ 700 % function XImage_Callback(hObject, eventdata, handles) 701 % %------------------------------------------------------------------------ 702 % update_list(hObject, eventdata,handles) 703 % 704 % %------------------------------------------------------------------------ 705 % function YImage_Callback(hObject, eventdata, handles) 706 % %------------------------------------------------------------------------ 707 % update_list(hObject, eventdata,handles) 712 708 713 709 %------------------------------------------------------------------------ … … 745 741 set(handles.ListCoordFiles,'string',listfile); 746 742 end 747 % set(handles.ListCoord,'Value',1)% refresh the display of coordinates748 743 set(handles.ListCoord,'Data',[]) 749 744 … … 752 747 function CLEAR_PTS_Callback(hObject, eventdata, handles) 753 748 % -------------------------------------------------------------------- 754 % set(handles.ListCoord,'Value',1)% refresh the display of coordinates755 % set(handles.ListCoord,'String',{'......'})756 749 set(handles.ListCoord,'Data',[]) 757 750 PLOT_Callback(hObject, eventdata, handles) 758 751 759 760 752 %------------------------------------------------------------------------ 761 753 % --- Executes on button press in CLEAR. … … 765 757 set(handles.ListCoordFiles,'String',{''}) 766 758 767 % ------------------------------------------------------------------------768 function XObject_Callback(hObject, eventdata, handles)769 % ------------------------------------------------------------------------770 update_list(hObject, eventdata,handles)771 772 % ------------------------------------------------------------------------773 function YObject_Callback(hObject, eventdata, handles)774 % ------------------------------------------------------------------------775 update_list(hObject, eventdata,handles)776 777 % ------------------------------------------------------------------------778 function ZObject_Callback(hObject, eventdata, handles)779 % ------------------------------------------------------------------------780 update_list(hObject, eventdata,handles)781 782 % ------------------------------------------------------------------------783 function update_list(hObject, eventdata, handles)784 % ------------------------------------------------------------------------785 newval(4)=str2double(get(handles.XImage,'String'));786 newval(5)=str2double(get(handles.YImage,'String'));787 newval(1)=str2double(get(handles.XObject,'String'));788 newval(2)=str2double(get(handles.YObject,'String'));789 newval(3)=str2double(get(handles.ZObject,'String'));790 if isnan(newval(3))791 newval(3)=0;%put z to 0 by default792 end793 Coord=get(handles.ListCoord,'String');794 Coord(end)=[]; %remove last string '.....'795 val=get(handles.ListCoord,'Value');796 data=read_geometry_calib(Coord);797 data.Coord(val,:)=newval;798 for i=1:size(data.Coord,1)799 for j=1:5800 Coord_cell{i,j}=num2str(data.Coord(i,j),4);%display coordiantes with 4 digits801 end802 end803 804 Tabchar=cell2tab(Coord_cell,' | ');805 Tabchar=[Tabchar ;{'......'}];806 set(handles.ListCoord,'String',Tabchar)807 808 % update the plot809 ListCoord_Callback(hObject, eventdata, handles)810 PLOT_Callback(hObject, eventdata, handles)759 % %------------------------------------------------------------------------ 760 % function XObject_Callback(hObject, eventdata, handles) 761 % %------------------------------------------------------------------------ 762 % update_list(hObject, eventdata,handles) 763 % 764 % %------------------------------------------------------------------------ 765 % function YObject_Callback(hObject, eventdata, handles) 766 % %------------------------------------------------------------------------ 767 % update_list(hObject, eventdata,handles) 768 % 769 % %------------------------------------------------------------------------ 770 % function ZObject_Callback(hObject, eventdata, handles) 771 % %------------------------------------------------------------------------ 772 % update_list(hObject, eventdata,handles) 773 % 774 % %------------------------------------------------------------------------ 775 % function update_list(hObject, eventdata, handles) 776 % %------------------------------------------------------------------------ 777 % newval(4)=str2double(get(handles.XImage,'String')); 778 % newval(5)=str2double(get(handles.YImage,'String')); 779 % newval(1)=str2double(get(handles.XObject,'String')); 780 % newval(2)=str2double(get(handles.YObject,'String')); 781 % newval(3)=str2double(get(handles.ZObject,'String')); 782 % if isnan(newval(3)) 783 % newval(3)=0;%put z to 0 by default 784 % end 785 % Coord=get(handles.ListCoord,'String'); 786 % Coord(end)=[]; %remove last string '.....' 787 % val=get(handles.ListCoord,'Value'); 788 % data=read_geometry_calib(Coord); 789 % data.Coord(val,:)=newval; 790 % for i=1:size(data.Coord,1) 791 % for j=1:5 792 % Coord_cell{i,j}=num2str(data.Coord(i,j),4);%display coordiantes with 4 digits 793 % end 794 % end 795 % 796 % Tabchar=cell2tab(Coord_cell,' | '); 797 % Tabchar=[Tabchar ;{'......'}]; 798 % set(handles.ListCoord,'String',Tabchar) 799 % 800 % %update the plot 801 % ListCoord_Callback(hObject, eventdata, handles) 802 % PLOT_Callback(hObject, eventdata, handles) 811 803 812 804 %------------------------------------------------------------------------ … … 829 821 end 830 822 831 function NEW_Callback(hObject, eventdata, handles)832 % A METTRE SOUS UN BOUTON833 huvmat=findobj(allchild(0),'Name','uvmat');834 hchild=get(huvmat,'children');835 hcoord=findobj(hchild,'Tag','menu_coord');836 coordtype=get(hcoord,'Value');837 haxes=findobj(hchild,'Tag','axes3');838 AxeData=get(haxes,'UserData');839 if ~isequal(hcoord,2)840 set(hcoord,'Value',2)841 huvmat=uvmat(AxeData);842 'relancer uvmat';843 end844 if ~isfield(AxeData,'ZoomAxes')845 msgbox_uvmat('ERROR','first draw a window around a grid marker')846 return847 end848 XLim=get(AxeData.ZoomAxes,'XLim');849 YLim=get(AxeData.ZoomAxes,'YLim');850 np=size(AxeData.A);851 ind_sub_x=round(XLim);852 ind_sub_y=np(1)-round(YLim);853 Mfiltre=AxeData.A(ind_sub_y(2):ind_sub_y(1) ,ind_sub_x,:);854 Mfiltre_norm=double(Mfiltre);855 Mfiltre_norm=Mfiltre_norm/sum(sum(Mfiltre_norm));856 Mfiltre_norm=100*(Mfiltre_norm-mean(mean(Mfiltre_norm)));857 Atype=class(AxeData.A);858 Data.NbDim=2;859 Data.A=filter2(Mfiltre_norm,double(AxeData.A));860 Data.A=feval(Atype,Data.A);861 Data.AName='image';862 Data.AX=AxeData.AX;863 Data.AY=AxeData.AY;864 Data.CoordType='px';865 plot_field(Data)823 % function NEW_Callback(hObject, eventdata, handles) 824 % %A METTRE SOUS UN BOUTON 825 % huvmat=findobj(allchild(0),'Name','uvmat'); 826 % hchild=get(huvmat,'children'); 827 % hcoord=findobj(hchild,'Tag','menu_coord'); 828 % coordtype=get(hcoord,'Value'); 829 % haxes=findobj(hchild,'Tag','axes3'); 830 % AxeData=get(haxes,'UserData'); 831 % if ~isequal(hcoord,2) 832 % set(hcoord,'Value',2) 833 % huvmat=uvmat(AxeData); 834 % 'relancer uvmat'; 835 % end 836 % if ~isfield(AxeData,'ZoomAxes') 837 % msgbox_uvmat('ERROR','first draw a window around a grid marker') 838 % return 839 % end 840 % XLim=get(AxeData.ZoomAxes,'XLim'); 841 % YLim=get(AxeData.ZoomAxes,'YLim'); 842 % np=size(AxeData.A); 843 % ind_sub_x=round(XLim); 844 % ind_sub_y=np(1)-round(YLim); 845 % Mfiltre=AxeData.A(ind_sub_y(2):ind_sub_y(1) ,ind_sub_x,:); 846 % Mfiltre_norm=double(Mfiltre); 847 % Mfiltre_norm=Mfiltre_norm/sum(sum(Mfiltre_norm)); 848 % Mfiltre_norm=100*(Mfiltre_norm-mean(mean(Mfiltre_norm))); 849 % Atype=class(AxeData.A); 850 % Data.NbDim=2; 851 % Data.A=filter2(Mfiltre_norm,double(AxeData.A)); 852 % Data.A=feval(Atype,Data.A); 853 % Data.AName='image'; 854 % Data.AX=AxeData.AX; 855 % Data.AY=AxeData.AY; 856 % Data.CoordType='px'; 857 % plot_field(Data) 866 858 867 859 … … 894 886 Coord=[x y zeros(4,1) Xima Yima zeros(4,1)]; 895 887 set(handles.ListCoord,'Data',Coord) 896 % Tabchar=cell2tab(Coord,' | ');897 % Tabchar=[Tabchar ;{'......'}];898 % set(handles.ListCoord,'String',Tabchar)899 % Coord={num2str(x(1)) num2str(y(1)) '0' num2str(Xima(1)) num2str(Yima(1));...900 % num2str(x(2)) num2str(y(2)) '0' num2str(Xima(2)) num2str(Yima(2));...901 % num2str(x(3)) num2str(y(3)) '0' num2str(Xima(3)) num2str(Yima(3));...902 % num2str(x(4)) num2str(y(4)) '0' num2str(Xima(4)) num2str(Yima(4))};903 % Tabchar=cell2tab(Coord,' | ');904 % Tabchar=[Tabchar ;{'......'}];905 % set(handles.ListCoord,'String',Tabchar)906 888 907 889 %------------------------------------------------------------------------ 908 890 function MenuCreateGrid_Callback(hObject, eventdata, handles) 909 891 %------------------------------------------------------------------------ 910 %hcalib=get(handles.calib_type,'parent');%handles of the GUI geometry_calib911 892 CalibData=get(handles.geometry_calib,'UserData'); 912 893 Tinput=[];%default … … 920 901 Coord=get(handles.ListCoord,'Data'); 921 902 Coord(1:size(T,1),1:3)=T;%update the existing list of phys coordinates from the GUI create_grid 922 923 % for i=1:size(data.Coord,1)924 % for j=1:5925 % Coord{i,j}=num2str(data.Coord(i,j),4);%display coordiantes with 4 digits926 % end927 % end928 903 set(handles.ListCoord,'Data',Coord) 929 904 … … 1059 1034 Coord=[T Xpx Ypx zeros(size(T,1),1)]; 1060 1035 set(handles.ListCoord,'Data',Coord) 1061 % Tabchar=cell2tab(Coord(end:-1:1,:),' | ');1062 % Tabchar=[Tabchar ;{'......'}];1063 % set(handles.ListCoord,'Value',1)1064 % set(handles.ListCoord,'String',Tabchar)1065 1036 PLOT_Callback(hObject, eventdata, handles) 1066 1037 … … 1078 1049 set(handles.geometry_calib,'UserData',CalibData) 1079 1050 %translation 1080 Coord_cell=get(handles.ListCoord,'String'); 1081 data=read_geometry_calib(Coord_cell); 1082 data.Coord(:,1)=T(1)+data.Coord(:,1); 1083 data.Coord(:,2)=T(2)+data.Coord(:,2); 1084 data.Coord(:,3)=T(3)+data.Coord(:,3); 1085 data.Coord(:,[4 5])=data.Coord(:,[4 5]); 1086 for i=1:size(data.Coord,1) 1087 for j=1:5 1088 Coord{i,j}=num2str(data.Coord(i,j),4);%phys x,y,z 1089 end 1090 end 1091 Tabchar=cell2tab(Coord,' | '); 1092 Tabchar=[Tabchar; {'.....'}]; 1093 %set(handles.ListCoord,'Value',1) 1094 set(handles.ListCoord,'String',Tabchar) 1095 1051 Coord=get(handles.ListCoord,'Data'); 1052 Coord(:,1)=T(1)+Coord(:,1); 1053 Coord(:,2)=T(2)+Coord(:,2); 1054 Coord(:,3)=T(3)+Coord(:,3); 1055 set(handles.ListCoord,'Data',Coord); 1096 1056 1097 1057 % -------------------------------------------------------------------- … … 1117 1077 O_y=T(3);%default 1118 1078 end 1119 Coord_cell=get(handles.ListCoord,'String'); 1120 data=read_geometry_calib(Coord_cell); 1079 Coord=get(handles.ListCoord,'Data'); 1121 1080 r1=cos(pi*Phi/180); 1122 1081 r2=-sin(pi*Phi/180); 1123 1082 r3=sin(pi*Phi/180); 1124 1083 r4=cos(pi*Phi/180); 1125 x=data.Coord(:,1)-O_x; 1126 y=data.Coord(:,2)-O_y; 1127 data.Coord(:,1)=r1*x+r2*y; 1128 data.Coord(:,2)=r3*x+r4*y; 1129 % data.Coord(:,[4 5])=data.Coord(:,[4 5]); 1130 for i=1:size(data.Coord,1) 1131 for j=1:5 1132 Coord{i,j}=num2str(data.Coord(i,j),4);%phys x,y,z 1133 end 1134 end 1135 Tabchar=cell2tab(Coord,' | '); 1136 Tabchar=[Tabchar;{'......'}]; 1137 set(handles.ListCoord,'Value',1) 1138 set(handles.ListCoord,'String',Tabchar) 1084 x=Coord(:,1)-O_x; 1085 y=Coord(:,2)-O_y; 1086 Coord(:,1)=r1*x+r2*y; 1087 Coord(:,2)=r3*x+r4*y; 1088 set(handles.ListCoord,'Data',Coord) 1139 1089 1140 1090 % -------------------------------------------------------------------- … … 1146 1096 [s,errormsg]=imadoc2struct(fileinput,'GeometryCalib'); 1147 1097 GeometryCalib=s.GeometryCalib; 1148 %GeometryCalib=load_calib(hObject, eventdata, handles)1149 % calib=reshape(GeometryCalib.SourceCalib.PointCoord,[],1);1150 % for ilist=1:numel(calib)1151 % CoordCell{ilist}=num2str(calib(ilist));1152 % end1153 % CoordCell=reshape(CoordCell,[],5);1154 % Tabchar=cell2tab(CoordCell,' | ');%transform cells into table ready for display1155 % Tabchar=[Tabchar;{'......'}];1156 % set(handles.ListCoord,'Value',1)1157 % set(handles.ListCoord,'String',Tabchar)1158 1098 Coord=GeometryCalib.SourceCalib.PointCoord; 1159 Coord=[Coord zeros(size(Coord,1),1)] 1099 Coord=[Coord zeros(size(Coord,1),1)]; 1160 1100 set(handles.ListCoord,'Data',Coord) 1161 1101 PLOT_Callback(handles.geometry_calib, [], handles) … … 1185 1125 % ----------------------------------------------------------------------- 1186 1126 inputfile=browse_xml(hObject, eventdata, handles); 1187 listfile=get(handles.ListCoordFiles,' string');1127 listfile=get(handles.ListCoordFiles,'String'); 1188 1128 if isequal(listfile,{''}) 1189 1129 listfile={inputfile}; … … 1292 1232 end 1293 1233 set(handles.calib_type,'Value',val_cal) 1294 % Tabchar=[Tabchar;{'......'}];1295 % set(handles.ListCoord,'Value',1)1296 1234 1297 1235 if isempty(CoordCell)% allow mouse action by default in the absence of input points … … 1341 1279 %------------------------------------------------------------------------ 1342 1280 function PLOT_Callback(hObject, eventdata, handles) 1343 global Coord1344 1281 huvmat=findobj(allchild(0),'Name','uvmat');%find the current uvmat interface handle 1345 1282 hhuvmat=guidata(huvmat); %handles of GUI elements in uvmat … … 1352 1289 option='px'; %default 1353 1290 end 1354 %ObjectData=read_geometry_calib(Coord_cell);1355 %ObjectData=read_geometry_calib(handles);%read the interface input parameters defining the object1356 1291 Coord=get(handles.ListCoord,'Data'); 1357 % Coord(:,6)=[];1358 1292 if ~isempty(Coord) 1359 1293 if isequal(option,'phys') … … 1384 1318 %------------------------------------------------------------------------ 1385 1319 function Copy_Callback(hObject, eventdata, handles) 1386 1320 global Coord 1387 1321 evalin('base','global Coord')%make CurData global in the workspace 1322 Coord=get(handles.ListCoord,'Data'); 1388 1323 display('coordinates of calibration points (phys,px,marker) :') 1389 1324 evalin('base','Coord') %display CurData in the workspace … … 1398 1333 Data(:,6)=zeros(size(Data,1),1); 1399 1334 Data(iline,6)=1;% mark the selected line 1400 % if size(Data,1)<iline+numel(Input)1401 % Data=[Data ; zeros(iline+numel(Input)-size(Data,1),6)];% append zeros to fit the new column1402 % end1403 % Data(iline:iline+numel(Input)-1,eventdata.Indices(2))=Input';1404 1335 set(handles.ListCoord,'Data',Data) 1405 1336 update_calib_marker(Data(iline,:)) 1406 end 1407 1408 % if length(eventdata.Modifier) == 1 && strcmp(eventdata.Modifier{:},'control') && ... 1409 % eventdata.Key == 'v' 1410 % import = importdata('-pastespecial'); 1411 % %data treatment and checking 1412 % set(handles.uitable1,'Data',import); 1413 % end 1337 end 1414 1338 1415 1339 % --- Executes when entered data in editable cell(s) in ListCoord. … … 1467 1391 set(hhh,'Position',[XCoord-ind_range/2 YCoord-ind_range/2 ind_range ind_range]) 1468 1392 end 1469 1470 1471 1472
Note: See TracChangeset
for help on using the changeset viewer.