[Digikam-users] IPTC: Person Shown / PersonInImage [Take 2]

Jean-Fran├žois Rabasse jean-francois.rabasse at wanadoo.fr
Tue Apr 16 10:13:01 BST 2013



Hello Jack,

I'd like to add a few comments to Simon's post.


On Tue, 16 Apr 2013, Simon Cropper wrote:

> What Erik is describing is an alternative approach used by many
> on this list -- the use of Keyword Tags to flag who is in the
> picture.
> 
> Essentially you can create a Keyword Tag for each unique entity
> and check these Keyword Tags if the person is seen in the
> picture (see manual on how to create tags). These Keyword Tags
> can also be easily used to filter your collection to show,
> say all photos with your Mum in it.

Definitely right !
But I think important to add that this is not just an alternative
because Digikam lacks Person in Image edition. Using (structured)
tags is a more natural and efficient way of documenting persons
(and other properties) for several reasons stated below.

And it's not only a Digikam issue, same problem has often been
discussed on Adobe forums and some Lightroom users prefer to use
the Lightroom tags system than the Person in Image field.

The reasons :

1. Tags (in Digikam or Lightroom) have a structured organisation
that allow names aliases without confusion. E.g. you can tag
images showing your friend David with "Persons/Friends/David" (or,
in Lightroom syntax, with "Persons|Friends|David"), and showing
your nephew David with "Persons/Family/David". The name is the
same but it's two different tags, and persons. Person in Image is
a single text field that would allow you to define two times
"David, David".

2. Tags are internal database entities and you can edit the text
label afterwards. Considering Simon's example, it's possible to
tag an image with "Persons/Celebrities/Mr Periwinkle". Some time
later, you wish to edit this tag label because you know the first
name of the guy. It's easy to select the tag, edit properties
(mouse right click on the tag) and replace "Mr Periwinkle" with
"Hieronymus Periwinkle". It takes a few seconds and your hundreds
of tagged images remain Ok.

With a system like Person in Image, you need to re-edit text for
all your already tagged images.

3. (And this is probably the most important reason) Persons
appearing on images are *lists*. You can have from one person (an
artistic portrait) to many (images of a social event, a wedding or
such) on an image.
Tags (Digikam or Lightroom) are implemented in lists,
using the XMP/RDF standard. As IPTC is an older standard,
lists didn't exist and the Person in Image field is a single text
field, not a variable length array. It's possible to define
several persons, using comma separated names, but this is not an
intrinsic and this raises many problems when you want to add or
remove data.

Back to Simon's example :

> exiv2 -M"add Xmp.iptcExt.PersonInImage Mr Periwinkle" image.jpg

Definitely correct, and your image metadata contains the proper
data field. But now, if you add someone else :

> exiv2 -M"add Xmp.iptcExt.PersonInImage Mrs Dandelion" image.jpg

You've overwritten previous data:-(

Scalar data fields are expected to be set only and have no support
for append or remove operations. Managing lists is thus very
complicated and requires dedicated software: you first need to
read existing text value, break into components using comma or
semicolon separators, add or remove a component, rebuild the full
list with separators and update the data field.

And this has to be done for every image. With tags, you just have
to select target images and add a tag "Persons/Celebrities/Mrs
Dandelion", whatever existing persons tags already exist. Add or
remove are natural operations.

The conclusion :

Especially wrt point 3, above, it sounds that an images
organisation system should probably avoid using things like Person
in Image and prefer organised tags (Digikam:TagsList or
LightRoom:hierarchicalSubject), this for greater flexibility for
now and future.


But, this doesn't solve your initial problem :

On Tue, 16 Apr 2013, Jack Tummers wrote:

> Thanks for the suggestions and explanation! I'll use exiv2 for
> now because my client uses PersonInImage in their image
> database. But of course I hope Digikam will let me add this tag
> in the future.

Of course, if you use applications that expect such or such
metadata field, that field must exist:-)

However, it's probably not the client programs that should master
images collections organisation, but the reverse. Organising
images, defining keywords, tags, documentation, etc., is work done
for a long period of time. Running client software is shorter,
one can use such program, then use another one the next year, etc.

So, perhaps, the reliable strategy is to be able, at a moment,
to translate or convert required data with dedicated small tools,
e.g. a script using command line tools such as exiv2 or exiftool
to extract tags (in Digikam format or Lightroom format) and build
a comma separated list to feed a PersonInImage value to client
programs that look at that.

It's nothing but my opinion...

Regards,
Jean-Fran├žois


More information about the Digikam-users mailing list