-----------------------------------------------------------------------
-- An example of Actor Prolog program. --
-- (c) 2014 IRE RAS Alexei A. Morozov --
-----------------------------------------------------------------------
--
pragma: INTERMEDIATE_SOURCE_CODE = JDK;
pragma: USE_COMPILER_INSTEAD_OF_PROVER = ON;
--
import .. from "morozov/Java2D";
import .. from "morozov/Vision";
--
DOMAINS:
--
reference:
--
ItemList = STRING; ItemList*.
YesNoUnknown = 'yes'; 'no'; 'unknown'.
--
ground:
--
GraphAnalysisMethod = 'off';
'method_one';
'method_two'.
--
IsAnomalous = 'yes'; 'no'.
--
DepthOfSearch = INTEGER.
--
-----------------------------------------------------------------------
interface 'Main' (specialized 'Alpha'):
--
constant:
--
inverse_transformation_matrix : TransformationMatrix;
sampling_rate : REAL;
--
stage_one : 'ImagePreprocessor';
stage_two : 'ImageAnalyser';
--
internal:
--
low_level_analyzer : 'ImageSubtractor';
--
[
]
-----------------------------------------------------------------------
interface 'ImagePreprocessor' (specialized 'Timer'):
--
constant:
--
sampling_rate : REAL;
--
low_level_analyzer : 'ImageSubtractor';
stage_two : 'ImageAnalyser';
--
internal:
--
subtractor : 'ImageSubtractor';
text : 'Text';
image : 'BufferedImage';
state : 'ProgramState';
--
[
PREDICATES:
--
imperative:
--
set_target_data_directry(STRING,INTEGER) - (i,i);
--
load_figure(INTEGER,INTEGER) - (i,i);
]
-----------------------------------------------------------------------
interface 'ImageAnalyser' (specialized 'Dialog'):
--
constant:
--
low_level_analyzer : 'ImageSubtractor';
preprocessor : 'ImagePreprocessor';
--
walking_speed_threshold_value : REAL;
walking_speed_threshold_halfwidth : REAL;
running_speed_threshold_value : REAL;
running_speed_threshold_halfwidth : REAL;
movement_duration_threshold_value : REAL;
movement_duration_threshold_halfwidth : REAL;
--
velocity_bound_1 : REAL;
velocity_bound_2 : REAL;
velocity_bound_3 : REAL;
velocity_bound_4 : REAL;
velocity_bound_5 : REAL;
velocity_bound_6 : REAL;
velocity_bound_7 : REAL;
velocity_bound_8 : REAL;
--
velocity_color_1 : Color;
velocity_color_2 : Color;
velocity_color_3 : Color;
velocity_color_4 : Color;
velocity_color_5 : Color;
velocity_color_6 : Color;
velocity_color_7 : Color;
velocity_color_8 : Color;
velocity_color_9 : Color;
--
maximal_depth_of_search : DepthOfSearch;
--
sampling_rate : REAL;
circle_radius : REAL;
--
internal:
--
subtractor : 'SynchronizedImageSubtractor';
graphic_window : 'Canvas2D';
prompt_window : 'Report';
text : 'Text';
image : 'BufferedImage';
timer : 'Timer';
con : 'Console';
files : 'File';
--
variable:
--
target_image : ItemList;
target_objects : ItemList;
--
[
PREDICATES:
--
imperative:
--
draw_scene;
draw_target_image(ItemList) - (i);
draw_target_objects(ItemList,FrameNumber) - (i,i);
--
draw_blobs(PointX,PointY,BlobList) - (i,i,i);
draw_blob(PointX,PointY,Blob) - (i,i,i);
--
draw_blob_identifier(
PointX,
PointY,
PointX,
PointY,
INTEGER) - (i,i,i,i,i);
--
draw_tracks(PointX,PointY,TrackList) - (i,i,i);
draw_track(PointX,PointY,Track) - (i,i,i);
--
draw_track_segments(
PointX,
PointY,
INTEGER,
TrackSegmentList) - (i,i,i,i);
draw_track_segment(
PointX,
PointY,
INTEGER,
TrackSegment) - (i,i,i,i);
--
draw_circle(PointX,PointY) - (i,i);
--
draw_track_identifier(
PointX,
PointY,
PointX,
PointY,
INTEGER) - (i,i,i,i,i);
--
draw_graphs( PointX,
PointY,
GraphList,
INTEGER,
GraphAnalysisMethod,
FrameNumber) - (i,i,i,i,i,i);
--
determ:
--
do_analyse_graph(GraphAnalysisMethod) - (i);
--
is_a_kind_of_a_lam(
GraphAnalysisMethod,
ConnectedGraph,
INTEGER,
ConnectedGraph,
ConnectedGraphEdge,
EdgeNumber,
ConnectedGraphEdge,
EdgeNumber,
ConnectedGraphEdge,
EdgeNumber) - (i,i,i,i,o,o,o,o,o,o);
contains_a_running_person(
EdgeNumbers,
ConnectedGraph,
EdgeNumbers,
ConnectedGraphEdge,
REAL,
REAL,
EdgeNumber,
EdgeNumber,
DepthOfSearch) - (i,i,i,o,o,o,i,o,i);
is_a_running_person(
ConnectedGraphEdge,
ConnectedGraph,
EdgeNumbers,
ConnectedGraphEdge,
REAL,
REAL,
EdgeNumber,
EdgeNumber,
DepthOfSearch) - (i,i,i,o,o,o,i,o,i);
contains_a_walking_person(
EdgeNumbers,
ConnectedGraph,
EdgeNumbers,
ConnectedGraphEdge,
REAL,
REAL,
EdgeNumber,
EdgeNumber,
DepthOfSearch) - (i,i,i,o,o,o,i,o,i);
is_a_walking_person(
ConnectedGraphEdge,
ConnectedGraph,
EdgeNumbers,
ConnectedGraphEdge,
REAL,
REAL,
EdgeNumber,
EdgeNumber,
DepthOfSearch) - (i,i,i,o,o,o,i,o,i);
is_a_meeting(
EdgeNumbers,
ConnectedGraph,
EdgeNumbers,
ConnectedGraphEdge,
EdgeNumber,
ConnectedGraphEdge,
EdgeNumber,
DepthOfSearch) - (i,i,i,i,i,o,o,i);
does_not_contain_person(
EdgeNumbers,
EdgeNumber,
ConnectedGraph,
EdgeNumbers) - (i,i,i,i);
--
is_not_element(
EdgeNumber,
EdgeNumbers) - (i,i);
--
imperative:
--
delete_element(
EdgeNumber,
EdgeNumbers,
EdgeNumbers) - (i,i,o);
--
imperative:
--
fuzzy_metrics(REAL,REAL,REAL) = REAL - (i,i,i);
--
imperative:
--
draw_graph(
PointX,
PointY,
ConnectedGraph,
ConnectedGraph,
IsAnomalous,
GraphAnalysisMethod,
INTEGER,
FrameNumber) - (i,i,i,i,i,i,i,i);
--
draw_edge(
PointX,
PointY,
ConnectedGraphEdge,
ConnectedGraph,
IsAnomalous,
GraphAnalysisMethod,
INTEGER,
FrameNumber) - (i,i,i,i,i,i,i,i);
--
draw_graph_identifier(
GraphAnalysisMethod,
PointX,
PointY,
PointX,
PointY,
INTEGER) - (i,i,i,i,i,i);
--
draw_origins(
PointX,
PointY,
PointX,
PointY,
EdgeNumbers,
ConnectedGraph) - (i,i,i,i,i,i);
draw_origin(
PointX,
PointY,
PointX,
PointY,
EdgeNumber,
ConnectedGraph) - (i,i,i,i,i,i);
draw_origin_arrow(
PointX,
PointY,
PointX,
PointY,
PointX,
PointY) - (i,i,i,i,i,i);
--
determ:
--
get_edge(
INTEGER,
ConnectedGraph,
ConnectedGraphEdge) - (i,i,o);
--
imperative:
--
draw_track_of_blobs(
PointX,
PointY,
TrackOfBlob,
IsAnomalous,
REAL) - (i,i,i,i,i);
draw_track_of_blobs(
PointX,
PointY,
PointX,
PointY,
TrackOfBlob,
IsAnomalous,
REAL) - (i,i,i,i,i,i,i);
--
select_line_color
(IsAnomalous,REAL,Color,INTEGER) - (i,i,o,o);
select_line_color(REAL,Color) - (i,o);
--
draw_rectangle( IsAnomalous,
EdgeNumbers,
TrackOfBlob,
PointX,
PointY,
FrameNumber) - (i,i,i,i,i,i);
draw_colored_rectangle(
TrackOfBlob,
PointX,
PointY,
FrameNumber,
Color,
INTEGER) - (i,i,i,i,i,i);
--
restore_settings;
ynu2yn(YesNoUnknown,YesNo) - (i,o);
--
switch_background_gaussian_filter_radius(YesNo) - (i);
switch_background_median_filter_threshold(YesNo) - (i);
switch_velocity_median_filter_halfwidth(YesNo) - (i);
switch_fuzzy_thresholds(YesNo) - (i);
--
dump_graphs(ItemList,GraphList) - (i,i);
dump_graphs(GraphAnalysisMethod,GraphList,INTEGER) - (i,i,i);
--
report_obtained_edges(
GraphAnalysisMethod,
EdgeNumber,
EdgeNumber,
EdgeNumber) - (i,i,i,i);
--
dump_graph( ConnectedGraph,
ConnectedGraph,
INTEGER) - (i,i,i);
--
check_edge(ConnectedGraphEdge,ConnectedGraph) - (i,i);
report_metrics_value(REAL,Color,Color) - (i,i,i);
dump_edge(ConnectedGraphEdge) - (i);
--
draw_legend;
--
report_time(FrameNumber) - (i);
--
PREDICATES:
--
imperative:
--
'+'(PointX,PointX) = PointX - (i,i);
'+'(PointY,PointY) = PointY - (i,i);
'-'(PointX,PointX) = PointX - (i,i);
'-'(PointY,PointY) = PointY - (i,i);
'/'(PointX,PointX) = PointX - (i,i);
'/'(PointY,PointY) = PointY - (i,i);
]
-----------------------------------------------------------------------
interface 'ProgramState' (specialized 'Database'):
[
DOMAINS:
--
Target = current_directory(STRING,INTEGER);
beginning_time(INTEGER);
current_frame(INTEGER).
--
PREDICATES:
--
determ:
--
get_target_directory(STRING,INTEGER) - (o,o);
get_beginning_time(INTEGER) - (o);
get_current_frame(INTEGER) - (o);
--
imperative:
--
set_target_directory(STRING,INTEGER) - (i,i);
set_beginning_time(INTEGER) - (i);
set_current_frame(INTEGER) - (i);
]
-----------------------------------------------------------------------
|