Skip to content

Regions of Interest

ROI is a class representing regions of interest within an OsiriX 2D display window. It provides control of the vertices/mask, color, and thickness of the object.

Type

All types only contain a single parameter, the UUID of the underlying OsiriX object.

types.proto (lines 21-23)
message ROI{
    string osirixrpc_uid = 1;
}

Methods

By convention, any method defined with syntax

rpc ROIXyz (ROIXyzRequest) returns (ROIXyzResponse) {}
is called in Python (for example) using syntax
response = osirix_stub.ROIXyz(request) # (1)

  1. response is a ROIXyzResponse class, and request a ROIXyzRequest class.
osirix.proto (lines 32-50)
rpc ROIDelete (ROI) returns (Response) {}
rpc ROIFlipHorizontally (ROI) returns (Response) {}
rpc ROIFlipVertically (ROI) returns (Response) {}
rpc ROIArea (ROI) returns (ROIAreaResponse) {}
rpc ROICentroid (ROI) returns (ROICentroidResponse) {}
rpc ROIRotate (ROIRotateRequest) returns (Response) {}
rpc ROIMove (ROIMoveRequest) returns (Response) {}
rpc ROIPix (ROI) returns (ROIPixResponse) {}
rpc ROIName (ROI) returns (ROINameResponse) {}
rpc ROIIType (ROI) returns (ROIITypeResponse) {}
rpc ROISetName (ROISetNameRequest) returns (Response) {}
rpc ROIColor (ROI) returns (ROIColorResponse) {}
rpc ROISetColor (ROISetColorRequest) returns (Response) {}
rpc ROIOpacity (ROI) returns (ROIOpacityResponse) {}
rpc ROISetOpacity (ROISetOpacityRequest) returns (Response) {}
rpc ROIThickness (ROI) returns (ROIThicknessResponse) {}
rpc ROISetThickness (ROISetThicknessRequest) returns (Response) {}
rpc ROIPoints (ROI) returns (ROIPointsResponse) {}
rpc ROISetPoints (ROISetPointsRequest) returns (Response) {}

Responses

By convention, any response defined with syntax

message ROIXyzResponse{
    type_1 arg_1 = 1;
    type_2 arg_2 = 2; // (1)
    ...
}

  1. The numbers on the RHS should be ignored. They are necessary only for protobuf file definitions.

has attributes accessed in Python (for example) using syntax

x1 = response.arg1
x2 = response.arg2
...

roi.proto (lines 9-59)
message ROIAreaResponse{
    Status status = 1;
    float area = 2;
}

message ROICentroidResponse{
    Status status = 1;
    float x = 2;
    float y = 3;
}

message ROIPixResponse{
    Status status = 1;
    DCMPix pix = 2;
}

message ROINameResponse{
    Status status = 1;
    string name = 2;
}

message ROIColorResponse{
    Status status = 1;
    int32 r = 2;
    int32 g = 3;
    int32 b = 4; 
}

message ROIOpacityResponse{
    Status status = 1;
    float opacity = 2;
}

message ROIThicknessResponse{
    Status status = 1;
    float thickness = 2;
}

message ROIPointsResponse{
    message Point2D{
        float x = 1;
        float y = 2;
    }
    Status status = 1;
    repeated Point2D points = 2;
}

message ROIITypeResponse{
    Status status = 1;
    int32 itype = 2;
}

Requests

By convention, any request defined with syntax

message ROIXyzRequest{
    type_1 arg_1 = 1;
    type_2 arg_2 = 2; // (1)
    ...
}

  1. The numbers on the RHS should be ignored. They are necessary only for protobuf file definitions.

is created in Python (for example) using syntax

from osirixgrpc import roi_pb2

request = roi_pb2.ROIXyzRequest(arg1 = x1, arg2 = x2, ...)

roi.proto (lines 62-)
message ROIRotateRequest{
    ROI roi = 1;
    float degrees = 2;
    float x = 3;
    float y = 4;
}

message ROIMoveRequest{
    ROI roi = 1;
    float columns = 2;
    float rows = 3;
}

message ROISetNameRequest{
    ROI roi = 1;
    string name = 2;
}

message ROISetColorRequest{
    ROI roi = 1;
    int32 r = 2;
    int32 g = 3;
    int32 b = 4;
}

message ROISetOpacityRequest{
    ROI roi = 1;
    float opacity = 2;
}

message ROISetThicknessRequest{
    ROI roi = 1;
    float thickness = 2;
}

message ROISetPointsRequest{
    message Point2D{
        float x = 1;
        float y = 2;
    }
    ROI roi = 1;
    repeated Point2D points = 2;
}