Cephalometric analyser

Hello Guys!

I’m new to ImageJ so I ask your help in composing a cephalometric analyser. It is too complicated to me and I don’t know how to begin. I’m trying to explain what I want to make.

Is it possible with ImageJ to assign several points (red on the attached picture) in a previously given order, then the program should construct reference lines using these. First reference line is FH what connects Or-Po points, the next one is PTV what goes through PT point and perpendicular to the previously constructed FH line. The third is perpPTV what goes through +6d point and perpendicular to PTV line. Where PTV and perpPTV intersects is called I point.

The goal is to export:

  • x and y coordinates of the assumed points,
  • the distance between +6d and I point,
  • the measured angle between FH and Or-I line (Or-I is not marked on the pic)

Anykind of assistance would be extremely appreciated.

Thank you very much.

Sincerely, Csaba

Hello Csaba,
a preliminary question:
are the red points putted by hand, right?
thank you,
have a nice day

Hello Emanuele,

Thank you for the answer. Yes, the red points are set by hand.
Do you have any ideas how to partially or totally sole the case or just how to begin?

Thanks in advance.


Hello Csaba,
I have some ideas about how to solve your analyisis.
I am so sorry but in this week I am really busy at work, so at the moment I don’t have time to reply.
I promise that as soon as I have some free time, I’ll come back and write you;)

In any case I think that I would face this analysis letting the user places one point by one point by hand, and as soon as possible draw lines and calculate your parameters with some math and trigonometry.
I think that it is not really hard, but at the moment I have no time to write down a code:(

Have a nice day,

Dear Emanuele,

First of all, I’am very glad that you are trying to solve this problem. I would like to say thank you for that.
I’m trying to write a to-do list, to help you and myself to put this analyser together. If you can help me more or less that would be gladly appreciated.

Thank you very much.

Have a nice day.

Sincerely, Csaba


  • user should be able to assign or move the previously named points (red on the attached pic) on the picture (we need the coordinates of these to draw lines, measure some distance and carculate some angles between them)

  • some lines are constructed as a perpendicular to another and goes through a previously named point (for example line PTV is perpendicular to line FH and goes through point Pt)

  • sometimes we have to measure the minimum distance between a line and a previously named point (for example the distance between PTV and +6d [line perpPTV originally is constructed for the purpose to measure the distance between the intersection of perpPTV and PTV – called point I – and +6d along this line])

  • the most complicated problem is the following. We have to construct 4 lines. R1, R2, R3 and R4. R1 and R2 is perpendicular to FH R3 and R4 is parallel with it. These lines has to be movable. After the user set these to their final locations the lines will draw a rectangle. The intercestion of the two diagonals of this rectangle called point Xi.

  • sometimes we have to see the connecting lines of defined points

  • there are points what can be movable only along a defined line

Dear Emanuele,

If you have free time to begin the above mentioned things, I will be pleased to cooperate and help anything I can. I have basic programming skills, so if you can write th preliminary elements I may continue the work.

Have a nice day.

Sincerely, Csaba

Hello Varga Csaba,
sorry for this very late reply…but it is a busy period for me :-S

I wrote this code in jython, essentially it permits to the user to draw the five points in clockwise
and the with some check of the user like adjust lines, adjust points and so
it finds the diagonals and calculates the Xi point! :slightly_smiling:

This is a very naive implementation, to be more like you want we have to add some listener to draw points perpinduclar and so on.

If you like it (I’ve attached you as .py file you can launch it by script editor selecting Python Language) we can try to improve a little and ok by the way export some parameters of your interest… like distances angles between points and lines.

Have a nice day,
cephalometric_analyzer.zip (2.3 KB)

1 Like

sorry I uploaded the wrong version…
This one is the correct one:)
By default it asks you to open an image.
then starts the analysis

cephalometric_analyzer_correct.zip (2.1 KB)

Dear Emanuel,

Thank you for your kind replay. I will check this out probably at the weekend.

Have a nice day.

Sincerely, Csaba

Hello Emanuel and Csaba,

I am looking to do the very same thing, and I’m wondering if you have made any progress you would be willing to share. I am using CBCT images for my data, and ideally, I’d like to place cephalometric points in one plane, and correct in another plane. Once the points are placed, the measurements would be automatic based on whatever template is in place for the analysis.



Dear Benjamin,

We did not get further with this project. On my behalf I was and still I am lack of time. Emanuel helped me a lot, but I could not get to the next step after a while, so i have nothing workable to share :frowning: If you planning to analyze 3D images I recommend you to think over how to set the cephalometric points in a 3D data during the analysis, it is a hard thing to do precisely. I have methodical ideas to do it. If you interested I can tell you my opinion.

Sicerely, Csaba

1 Like


This being an old conversation, I am surprised to receive such a quick response; thank you! I am looking at a demo of Invivo5 (anatomage), which does 3D analysis, but it’s a $7000 program with more orthodontic practice based functions than I could ever need. I’m just doing a Ph.D. in anatomy and I’m looking for a viable way to measure CBCT’s. 3D cephalometric points seems to be the way to go, but it’s complicated. I like open-source, but like you said, time is an issue. I need to get this Ph.D. finished and an expensive software package may be my best option, but it’s stressing me out to think of paying THAT much for software.

Would love to hear your thoughts/advice.