Suggested Enhancements to channel issues

Questions and postings pertaining to the development of ImageMagick, feature enhancements, and ImageMagick internals. ImageMagick source code and algorithms are discussed here. Usage questions which are too arcane for the normal user list should also be posted here.
Post Reply
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Suggested Enhancements to channel issues

Post by fmw42 »

Hello,

I would like to suggest some possible enhancements to how channels are handled in IM.

To access a (RGB or some other colorspace) channel one has to do:

convert image.png -colorspace RGB -separate image_%d.png

(where -colorspace RGB is optional if you know the image is already RGB)

or each channel one at a time, say to get just the green channel

convert image.png -colorspace RGB -separate Green image_green.png

Then to recombine them later one has to do

convert image_0.png -colorspace RGB \
image_0.png -compose CopyRed -composite \
image_1.png -compose CopyGreen -composite \
image_2.png -compose CopyBlue -composite \
-colorspace RGB image_recombined.png

(again where -colorspace RGB is optional if you know it is already RGB)

This latter step is rather awkward.

I was wondering how feasible it might be to handle channels much like you do frames. So one might use { channel# } as you do [ frame# }

Thus one would do

convert image.png{ 1 } ...some processing functions... image_green_processed.png


and to recombine each channel into a color image, you would do.


convert image_red.png image_green.png image_blue.png -colorspace RGB image_color.png

or some new function to recombine such as

convert image_red.png image_green.png image_blue.png -unite RGB image_color.png


Thanks for giving this some consideration.

Fred Weinhaus
fmw@alink.net
User avatar
magick
Site Admin
Posts: 11064
Joined: 2003-05-31T11:32:55-07:00

Re: Suggested Enhancements to channel issues

Post by magick »

You can operate on select channels with the -channel option (e.g. -channel Red), however, not all option supports channels. If a particular option is important to you that does not already support channels, let us know and we will add support within a few days (if it makes sense to do so).
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: Suggested Enhancements to channel issues

Post by fmw42 »

Again you are missing the point. The suggestion is to make improvements to the ease of using IM and possibly to support more channels in an image such as Landsat.

With regard to my suggestion:

convert image_red.png image_green.png image_blue.png -unite RGB image_color.png

I just found that you have something like this:

convert image_red.png image_green.png image_blue.png -combine image_color.png

Nevertheless, having a shortcut to access channels such as image.jpg{2} for green seems reasonable and also to allow IM to handle more channels than 3 or 4 also seems useful (i.g. multispectral imagery)


Again these are just suggestion.

Thanks.

Fred Weinhaus
User avatar
anthony
Posts: 8883
Joined: 2004-05-31T19:27:03-07:00
Authentication code: 8675308
Location: Brisbane, Australia

Re: Suggested Enhancements to channel issues

Post by anthony »

First We try very hard to keep IM backward compatible, except in the case when some option is still in development (EG the new -distort, will have a coordinate system change shortly as we improve its usfulness).

If we can not make it backward compatible a new option is created and the old one made a 'fallback alias' for the new option (As in -deconstruct which is equivalent to -layers CompareAny). Eventually the old one will start giving warnings and maybe be discontinued. Most such new options are more combined options to try and reduce the number of options (for example -distort method 'args...' or -layers method ) instead of adding to the current option proliferation.

Now you can currently separate a individual channel from a image using a -channel setting. See IM examples, Channels and Masks,
http://www.imagemagick.org/Usage/channels/#separate
For example to get 'green' use

Code: Select all

   convert image.jpg -colorspace RGB -channel green -separate  green.png
Colorspace is ONLY used to transform and define what the channels in memory
actually contain. See http://www.imagemagick.org/Usage/basics/#colorspace

The only problem that is currently -combine does not understand how to combine grayscale channel images for non-RGB colorspaces.
Also the 'CopyBlack' is not handling a Black channel grayscale image correctly.
These known problems are detailed in Bugs and Testing
http://www.imagemagick.org/Usage/bugs/testing/

Your -unite RGB suggestion is however a good one
though maybe not the right name for the operation.

What is more needed however is people willing to attempt to create patches for the magick core, following the styles I outlined above.
Anthony Thyssen -- Webmaster for ImageMagick Example Pages
https://imagemagick.org/Usage/
Post Reply