strange verbose info from various image types in hdri

Post any defects you find in the released or beta versions of the ImageMagick software here. Include the ImageMagick version, OS, and any command-line required to reproduce the problem. Got a patch for a bug? Post it here.
Post Reply
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

strange verbose info from various image types in hdri

Post by fmw42 »

IM 6.6.3.4 Q16 HDRI Mac OSX Tiger.

I am getting some strange results from -verbose info for MIFF and TIFF file formats compared to MPC and PFM in HDRI mode when using -fx "ln(u)". I don't know if the images are wrong or the verbose info is wrong. These are all formats that are suppose to be supported by HDRI.


Lets create a gradient and save in MIFF format. This looks reasonable. Including the histogram.

convert -size 100x100 gradient: grad.miff
dentify -verbose grad.miff
Image: grad.miff
Format: MIFF (Magick Image File Format)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Grayscale
Base type: Grayscale
Endianess: Undefined
Colorspace: RGB
Depth: 16-bit
Channel depth:
gray: 16-bit
Channel statistics:
Gray:
min: 0 (0)
max: 65535 (1)
mean: 32767.5 (0.5)
standard deviation: 19108.4 (0.291576)
kurtosis: 68.6758
skewness: 4.88205e-13
Histogram:
100: ( 0, 0, 0) #000000000000 black
100: ( 662, 662, 662) #029602960296 rgb(1.01015%,1.01015%,1.01015%)
100: ( 1324, 1324, 1324) #052C052C052C rgb(2.02029%,2.02029%,2.02029%)
100: ( 1986, 1986, 1986) #07C207C207C2 rgb(3.03044%,3.03044%,3.03044%)
100: ( 2648, 2648, 2648) #0A580A580A58 rgb(4.04059%,4.04059%,4.04059%)
100: ( 3310, 3310, 3310) #0CEE0CEE0CEE rgb(5.05074%,5.05074%,5.05074%)
100: ( 3972, 3972, 3972) #0F840F840F84 rgb(6.06088%,6.06088%,6.06088%)
100: ( 4634, 4634, 4634) #121A121A121A rgb(7.07103%,7.07103%,7.07103%)
100: ( 5296, 5296, 5296) #14B014B014B0 rgb(8.08118%,8.08118%,8.08118%)
100: ( 5958, 5958, 5958) #174617461746 rgb(9.09133%,9.09133%,9.09133%)
100: ( 6620, 6620, 6620) #19DC19DC19DC rgb(10.1015%,10.1015%,10.1015%)
100: ( 7282, 7282, 7282) #1C721C721C72 rgb(11.1116%,11.1116%,11.1116%)
100: ( 7944, 7944, 7944) #1F081F081F08 rgb(12.1218%,12.1218%,12.1218%)
100: ( 8606, 8606, 8606) #219E219E219E rgb(13.1319%,13.1319%,13.1319%)
100: ( 9268, 9268, 9268) #243424342434 rgb(14.1421%,14.1421%,14.1421%)
100: ( 9930, 9930, 9930) #26CA26CA26CA rgb(15.1522%,15.1522%,15.1522%)
100: (10592,10592,10592) #296029602960 rgb(16.1624%,16.1624%,16.1624%)
100: (11253,11253,11253) #2BF52BF52BF5 rgb(17.171%,17.171%,17.171%)
100: (11915,11915,11915) #2E8B2E8B2E8B rgb(18.1811%,18.1811%,18.1811%)
100: (12577,12577,12577) #312131213121 rgb(19.1913%,19.1913%,19.1913%)
100: (13239,13239,13239) #33B733B733B7 rgb(20.2014%,20.2014%,20.2014%)
100: (13901,13901,13901) #364D364D364D rgb(21.2116%,21.2116%,21.2116%)
100: (14563,14563,14563) #38E338E338E3 rgb(22.2217%,22.2217%,22.2217%)
100: (15225,15225,15225) #3B793B793B79 rgb(23.2319%,23.2319%,23.2319%)
100: (15887,15887,15887) #3E0F3E0F3E0F rgb(24.242%,24.242%,24.242%)
100: (16549,16549,16549) #40A540A540A5 rgb(25.2522%,25.2522%,25.2522%)
100: (17211,17211,17211) #433B433B433B rgb(26.2623%,26.2623%,26.2623%)
100: (17873,17873,17873) #45D145D145D1 rgb(27.2724%,27.2724%,27.2724%)
100: (18535,18535,18535) #486748674867 rgb(28.2826%,28.2826%,28.2826%)
100: (19197,19197,19197) #4AFD4AFD4AFD rgb(29.2927%,29.2927%,29.2927%)
100: (19859,19859,19859) #4D934D934D93 rgb(30.3029%,30.3029%,30.3029%)
100: (20521,20521,20521) #502950295029 rgb(31.313%,31.313%,31.313%)
100: (21183,21183,21183) #52BF52BF52BF rgb(32.3232%,32.3232%,32.3232%)
100: (21845,21845,21845) #555555555555 rgb(85,85,85)
100: (22507,22507,22507) #57EB57EB57EB rgb(34.3435%,34.3435%,34.3435%)
100: (23169,23169,23169) #5A815A815A81 rgb(35.3536%,35.3536%,35.3536%)
100: (23831,23831,23831) #5D175D175D17 rgb(36.3638%,36.3638%,36.3638%)
100: (24493,24493,24493) #5FAD5FAD5FAD rgb(37.3739%,37.3739%,37.3739%)
100: (25155,25155,25155) #624362436243 rgb(38.3841%,38.3841%,38.3841%)
100: (25817,25817,25817) #64D964D964D9 rgb(39.3942%,39.3942%,39.3942%)
100: (26479,26479,26479) #676F676F676F rgb(40.4044%,40.4044%,40.4044%)
100: (27141,27141,27141) #6A056A056A05 rgb(41.4145%,41.4145%,41.4145%)
100: (27803,27803,27803) #6C9B6C9B6C9B rgb(42.4247%,42.4247%,42.4247%)
100: (28465,28465,28465) #6F316F316F31 rgb(43.4348%,43.4348%,43.4348%)
100: (29127,29127,29127) #71C771C771C7 rgb(44.445%,44.445%,44.445%)
100: (29789,29789,29789) #745D745D745D rgb(45.4551%,45.4551%,45.4551%)
100: (30451,30451,30451) #76F376F376F3 rgb(46.4652%,46.4652%,46.4652%)
100: (31113,31113,31113) #798979897989 rgb(47.4754%,47.4754%,47.4754%)
100: (31775,31775,31775) #7C1F7C1F7C1F rgb(48.4855%,48.4855%,48.4855%)
100: (32437,32437,32437) #7EB57EB57EB5 rgb(49.4957%,49.4957%,49.4957%)
100: (33098,33098,33098) #814A814A814A rgb(50.5043%,50.5043%,50.5043%)
100: (33760,33760,33760) #83E083E083E0 rgb(51.5145%,51.5145%,51.5145%)
100: (34422,34422,34422) #867686768676 rgb(52.5246%,52.5246%,52.5246%)
100: (35084,35084,35084) #890C890C890C rgb(53.5348%,53.5348%,53.5348%)
100: (35746,35746,35746) #8BA28BA28BA2 rgb(54.5449%,54.5449%,54.5449%)
100: (36408,36408,36408) #8E388E388E38 rgb(55.555%,55.555%,55.555%)
100: (37070,37070,37070) #90CE90CE90CE rgb(56.5652%,56.5652%,56.5652%)
100: (37732,37732,37732) #936493649364 rgb(57.5753%,57.5753%,57.5753%)
100: (38394,38394,38394) #95FA95FA95FA rgb(58.5855%,58.5855%,58.5855%)
100: (39056,39056,39056) #989098909890 rgb(59.5956%,59.5956%,59.5956%)
100: (39718,39718,39718) #9B269B269B26 rgb(60.6058%,60.6058%,60.6058%)
100: (40380,40380,40380) #9DBC9DBC9DBC rgb(61.6159%,61.6159%,61.6159%)
100: (41042,41042,41042) #A052A052A052 rgb(62.6261%,62.6261%,62.6261%)
100: (41704,41704,41704) #A2E8A2E8A2E8 rgb(63.6362%,63.6362%,63.6362%)
100: (42366,42366,42366) #A57EA57EA57E rgb(64.6464%,64.6464%,64.6464%)
100: (43028,43028,43028) #A814A814A814 rgb(65.6565%,65.6565%,65.6565%)
100: (43690,43690,43690) #AAAAAAAAAAAA rgb(170,170,170)
100: (44352,44352,44352) #AD40AD40AD40 rgb(67.6768%,67.6768%,67.6768%)
100: (45014,45014,45014) #AFD6AFD6AFD6 rgb(68.687%,68.687%,68.687%)
100: (45676,45676,45676) #B26CB26CB26C rgb(69.6971%,69.6971%,69.6971%)
100: (46338,46338,46338) #B502B502B502 rgb(70.7073%,70.7073%,70.7073%)
100: (47000,47000,47000) #B798B798B798 rgb(71.7174%,71.7174%,71.7174%)
100: (47662,47662,47662) #BA2EBA2EBA2E rgb(72.7276%,72.7276%,72.7276%)
100: (48324,48324,48324) #BCC4BCC4BCC4 rgb(73.7377%,73.7377%,73.7377%)
100: (48986,48986,48986) #BF5ABF5ABF5A rgb(74.7478%,74.7478%,74.7478%)
100: (49648,49648,49648) #C1F0C1F0C1F0 rgb(75.758%,75.758%,75.758%)
100: (50310,50310,50310) #C486C486C486 rgb(76.7681%,76.7681%,76.7681%)
100: (50972,50972,50972) #C71CC71CC71C rgb(77.7783%,77.7783%,77.7783%)
100: (51634,51634,51634) #C9B2C9B2C9B2 rgb(78.7884%,78.7884%,78.7884%)
100: (52296,52296,52296) #CC48CC48CC48 rgb(79.7986%,79.7986%,79.7986%)
100: (52958,52958,52958) #CEDECEDECEDE rgb(80.8087%,80.8087%,80.8087%)
100: (53620,53620,53620) #D174D174D174 rgb(81.8189%,81.8189%,81.8189%)
100: (54282,54282,54282) #D40AD40AD40A rgb(82.829%,82.829%,82.829%)
100: (54943,54943,54943) #D69FD69FD69F rgb(83.8376%,83.8376%,83.8376%)
100: (55605,55605,55605) #D935D935D935 rgb(84.8478%,84.8478%,84.8478%)
100: (56267,56267,56267) #DBCBDBCBDBCB rgb(85.8579%,85.8579%,85.8579%)
100: (56929,56929,56929) #DE61DE61DE61 rgb(86.8681%,86.8681%,86.8681%)
100: (57591,57591,57591) #E0F7E0F7E0F7 rgb(87.8782%,87.8782%,87.8782%)
100: (58253,58253,58253) #E38DE38DE38D rgb(88.8884%,88.8884%,88.8884%)
100: (58915,58915,58915) #E623E623E623 rgb(89.8985%,89.8985%,89.8985%)
100: (59577,59577,59577) #E8B9E8B9E8B9 rgb(90.9087%,90.9087%,90.9087%)
100: (60239,60239,60239) #EB4FEB4FEB4F rgb(91.9188%,91.9188%,91.9188%)
100: (60901,60901,60901) #EDE5EDE5EDE5 rgb(92.929%,92.929%,92.929%)
100: (61563,61563,61563) #F07BF07BF07B rgb(93.9391%,93.9391%,93.9391%)
100: (62225,62225,62225) #F311F311F311 rgb(94.9493%,94.9493%,94.9493%)
100: (62887,62887,62887) #F5A7F5A7F5A7 rgb(95.9594%,95.9594%,95.9594%)
100: (63549,63549,63549) #F83DF83DF83D rgb(96.9696%,96.9696%,96.9696%)
100: (64211,64211,64211) #FAD3FAD3FAD3 rgb(97.9797%,97.9797%,97.9797%)
100: (64873,64873,64873) #FD69FD69FD69 rgb(98.9899%,98.9899%,98.9899%)
100: (65535,65535,65535) #FFFFFFFFFFFF white

1) Now lets process and save in MIFF. We get bilevel format, but I don't think that is correct, is it?

convert grad.miff -fx "ln(u)" miff:- | identify -verbose -
Image: /var/tmp/magick-BihU77de
Base filename: -
Format: MIFF (Magick Image File Format)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Bilevel
Base type: Bilevel
Endianess: Undefined
Colorspace: RGB
Depth: 16/1-bit
Channel depth:
gray: 1-bit
Channel statistics:
Gray:
min: 0 (0)
max: 0 (0)
mean: 0 (0)
standard deviation: -0 (-0)
kurtosis: 0
skewness: 0
Histogram:
10000: ( 0, 0, 0) #000000000000 black


2) Now lets do the same in TIFF. The same happens.


convert grad.miff -fx "ln(u)" TIFF:- | identify -verbose -
Image: /var/tmp/magick-qNv1pPZA
Base filename: -
Format: TIFF (Tagged Image File Format)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Bilevel
Base type: Bilevel
Endianess: MSB
Colorspace: RGB
Depth: 16/1-bit
Channel depth:
gray: 1-bit
Channel statistics:
Gray:
min: 0 (0)
max: 0 (0)
mean: 0 (0)

standard deviation: -0 (-0)
kurtosis: 0
skewness: 0
Histogram:
10000: ( 0, 0, 0) #000000000000 black


3) Now lets save in MPC format. This looks more correct as the values range from -infinity to 0 (as the ln(0)=-infinity and ln(1)=0). I am not sure why it is RGB rather than graylevel.
Should they be graylevel?
The raw histogram values are all 0 as I guess they won't show negatives. Is that correct? Or should they show negatives, since the RGB values show negative percents?

identify -verbose grad.mpc
Image: grad.mpc
Format: MPC (Magick Persistent Cache image format)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Palette
Endianess: Undefined
Colorspace: RGB
Depth: 16-bit
Channel depth:
red: 16-bit
green: 16-bit
blue: 16-bit
Channel statistics:
Red:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Green:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Blue:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Image statistics:
Overall:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Histogram:
100: ( 0, 0, 0) #000000000000 rgb(-inf%,-inf%,-inf%)
100: ( 0, 0, 0) #000000000000 rgb(-459.507%,-459.507%,-459.507%)
100: ( 0, 0, 0) #000000000000 rgb(-390.193%,-390.193%,-390.193%)
100: ( 0, 0, 0) #000000000000 rgb(-349.646%,-349.646%,-349.646%)
100: ( 0, 0, 0) #000000000000 rgb(-320.878%,-320.878%,-320.878%)
100: ( 0, 0, 0) #000000000000 rgb(-298.564%,-298.564%,-298.564%)
100: ( 0, 0, 0) #000000000000 rgb(-280.331%,-280.331%,-280.331%)
100: ( 0, 0, 0) #000000000000 rgb(-264.916%,-264.916%,-264.916%)
100: ( 0, 0, 0) #000000000000 rgb(-251.563%,-251.563%,-251.563%)
100: ( 0, 0, 0) #000000000000 rgb(-239.785%,-239.785%,-239.785%)
100: ( 0, 0, 0) #000000000000 rgb(-229.249%,-229.249%,-229.249%)
100: ( 0, 0, 0) #000000000000 rgb(-219.718%,-219.718%,-219.718%)
100: ( 0, 0, 0) #000000000000 rgb(-211.017%,-211.017%,-211.017%)
100: ( 0, 0, 0) #000000000000 rgb(-203.012%,-203.012%,-203.012%)
100: ( 0, 0, 0) #000000000000 rgb(-195.602%,-195.602%,-195.602%)
100: ( 0, 0, 0) #000000000000 rgb(-188.702%,-188.702%,-188.702%)
100: ( 0, 0, 0) #000000000000 rgb(-182.249%,-182.249%,-182.249%)
100: ( 0, 0, 0) #000000000000 rgb(-176.195%,-176.195%,-176.195%)
100: ( 0, 0, 0) #000000000000 rgb(-170.479%,-170.479%,-170.479%)
100: ( 0, 0, 0) #000000000000 rgb(-165.071%,-165.071%,-165.071%)
100: ( 0, 0, 0) #000000000000 rgb(-159.942%,-159.942%,-159.942%)
100: ( 0, 0, 0) #000000000000 rgb(-155.062%,-155.062%,-155.062%)
100: ( 0, 0, 0) #000000000000 rgb(-150.41%,-150.41%,-150.41%)
100: ( 0, 0, 0) #000000000000 rgb(-145.965%,-145.965%,-145.965%)
100: ( 0, 0, 0) #000000000000 rgb(-141.708%,-141.708%,-141.708%)
100: ( 0, 0, 0) #000000000000 rgb(-137.626%,-137.626%,-137.626%)
100: ( 0, 0, 0) #000000000000 rgb(-133.704%,-133.704%,-133.704%)
100: ( 0, 0, 0) #000000000000 rgb(-129.929%,-129.929%,-129.929%)
100: ( 0, 0, 0) #000000000000 rgb(-126.292%,-126.292%,-126.292%)
100: ( 0, 0, 0) #000000000000 rgb(-122.783%,-122.783%,-122.783%)
100: ( 0, 0, 0) #000000000000 rgb(-119.393%,-119.393%,-119.393%)
100: ( 0, 0, 0) #000000000000 rgb(-116.114%,-116.114%,-116.114%)
100: ( 0, 0, 0) #000000000000 rgb(-112.939%,-112.939%,-112.939%)
100: ( 0, 0, 0) #000000000000 rgb(-109.861%,-109.861%,-109.861%)
100: ( 0, 0, 0) #000000000000 rgb(-106.876%,-106.876%,-106.876%)
100: ( 0, 0, 0) #000000000000 rgb(-103.977%,-103.977%,-103.977%)
100: ( 0, 0, 0) #000000000000 rgb(-101.16%,-101.16%,-101.16%)
100: ( 0, 0, 0) #000000000000 rgb(-98.4197%,-98.4197%,-98.4197%)
100: ( 0, 0, 0) #000000000000 rgb(-95.7528%,-95.7528%,-95.7528%)
100: ( 0, 0, 0) #000000000000 rgb(-93.1551%,-93.1551%,-93.1551%)
100: ( 0, 0, 0) #000000000000 rgb(-90.6232%,-90.6232%,-90.6232%)
100: ( 0, 0, 0) #000000000000 rgb(-88.1539%,-88.1539%,-88.1539%)
100: ( 0, 0, 0) #000000000000 rgb(-85.744%,-85.744%,-85.744%)
100: ( 0, 0, 0) #000000000000 rgb(-83.3909%,-83.3909%,-83.3909%)
100: ( 0, 0, 0) #000000000000 rgb(-81.0919%,-81.0919%,-81.0919%)
100: ( 0, 0, 0) #000000000000 rgb(-78.8445%,-78.8445%,-78.8445%)
100: ( 0, 0, 0) #000000000000 rgb(-76.6465%,-76.6465%,-76.6465%)
100: ( 0, 0, 0) #000000000000 rgb(-74.4959%,-74.4959%,-74.4959%)
100: ( 0, 0, 0) #000000000000 rgb(-72.3905%,-72.3905%,-72.3905%)
100: ( 0, 0, 0) #000000000000 rgb(-70.3285%,-70.3285%,-70.3285%)
100: ( 0, 0, 0) #000000000000 rgb(-68.3111%,-68.3111%,-68.3111%)
100: ( 0, 0, 0) #000000000000 rgb(-66.3308%,-66.3308%,-66.3308%)
100: ( 0, 0, 0) #000000000000 rgb(-64.3888%,-64.3888%,-64.3888%)
100: ( 0, 0, 0) #000000000000 rgb(-62.4839%,-62.4839%,-62.4839%)
100: ( 0, 0, 0) #000000000000 rgb(-60.6146%,-60.6146%,-60.6146%)
100: ( 0, 0, 0) #000000000000 rgb(-58.7796%,-58.7796%,-58.7796%)
100: ( 0, 0, 0) #000000000000 rgb(-56.9776%,-56.9776%,-56.9776%)
100: ( 0, 0, 0) #000000000000 rgb(-55.2076%,-55.2076%,-55.2076%)
100: ( 0, 0, 0) #000000000000 rgb(-53.4683%,-53.4683%,-53.4683%)
100: ( 0, 0, 0) #000000000000 rgb(-51.7588%,-51.7588%,-51.7588%)
100: ( 0, 0, 0) #000000000000 rgb(-50.078%,-50.078%,-50.078%)
100: ( 0, 0, 0) #000000000000 rgb(-48.425%,-48.425%,-48.425%)
100: ( 0, 0, 0) #000000000000 rgb(-46.7988%,-46.7988%,-46.7988%)
100: ( 0, 0, 0) #000000000000 rgb(-45.1987%,-45.1987%,-45.1987%)
100: ( 0, 0, 0) #000000000000 rgb(-43.6238%,-43.6238%,-43.6238%)
100: ( 0, 0, 0) #000000000000 rgb(-42.0733%,-42.0733%,-42.0733%)
100: ( 0, 0, 0) #000000000000 rgb(-40.5465%,-40.5465%,-40.5465%)
100: ( 0, 0, 0) #000000000000 rgb(-39.0427%,-39.0427%,-39.0427%)
100: ( 0, 0, 0) #000000000000 rgb(-37.5611%,-37.5611%,-37.5611%)
100: ( 0, 0, 0) #000000000000 rgb(-36.1011%,-36.1011%,-36.1011%)
100: ( 0, 0, 0) #000000000000 rgb(-34.6622%,-34.6622%,-34.6622%)
100: ( 0, 0, 0) #000000000000 rgb(-33.2437%,-33.2437%,-33.2437%)
100: ( 0, 0, 0) #000000000000 rgb(-31.845%,-31.845%,-31.845%)
100: ( 0, 0, 0) #000000000000 rgb(-30.4656%,-30.4656%,-30.4656%)
100: ( 0, 0, 0) #000000000000 rgb(-29.105%,-29.105%,-29.105%)
100: ( 0, 0, 0) #000000000000 rgb(-27.7626%,-27.7626%,-27.7626%)
100: ( 0, 0, 0) #000000000000 rgb(-26.438%,-26.438%,-26.438%)
100: ( 0, 0, 0) #000000000000 rgb(-25.1308%,-25.1308%,-25.1308%)
100: ( 0, 0, 0) #000000000000 rgb(-23.8404%,-23.8404%,-23.8404%)
100: ( 0, 0, 0) #000000000000 rgb(-22.5664%,-22.5664%,-22.5664%)
100: ( 0, 0, 0) #000000000000 rgb(-21.3085%,-21.3085%,-21.3085%)
100: ( 0, 0, 0) #000000000000 rgb(-20.0662%,-20.0662%,-20.0662%)
100: ( 0, 0, 0) #000000000000 rgb(-18.8392%,-18.8392%,-18.8392%)
100: ( 0, 0, 0) #000000000000 rgb(-17.6288%,-17.6288%,-17.6288%)
100: ( 0, 0, 0) #000000000000 rgb(-16.4311%,-16.4311%,-16.4311%)
100: ( 0, 0, 0) #000000000000 rgb(-15.2476%,-15.2476%,-15.2476%)
100: ( 0, 0, 0) #000000000000 rgb(-14.0779%,-14.0779%,-14.0779%)
100: ( 0, 0, 0) #000000000000 rgb(-12.9218%,-12.9218%,-12.9218%)
100: ( 0, 0, 0) #000000000000 rgb(-11.7789%,-11.7789%,-11.7789%)
100: ( 0, 0, 0) #000000000000 rgb(-10.6489%,-10.6489%,-10.6489%)
100: ( 0, 0, 0) #000000000000 rgb(-9.53148%,-9.53148%,-9.53148%)
100: ( 0, 0, 0) #000000000000 rgb(-8.42644%,-8.42644%,-8.42644%)
100: ( 0, 0, 0) #000000000000 rgb(-7.33348%,-7.33348%,-7.33348%)
100: ( 0, 0, 0) #000000000000 rgb(-6.25233%,-6.25233%,-6.25233%)
100: ( 0, 0, 0) #000000000000 rgb(-5.18275%,-5.18275%,-5.18275%)
100: ( 0, 0, 0) #000000000000 rgb(-4.12449%,-4.12449%,-4.12449%)
100: ( 0, 0, 0) #000000000000 rgb(-3.07731%,-3.07731%,-3.07731%)
100: ( 0, 0, 0) #000000000000 rgb(-2.04098%,-2.04098%,-2.04098%)
100: ( 0, 0, 0) #000000000000 rgb(-1.01528%,-1.01528%,-1.01528%)
100: ( 0, 0, 0) #000000000000 black


3) Now lets do this in PFM. This also looks correct or at least the same as MPC.


convert grad.miff -fx "ln(u)" PFM:- | identify -verbose -Image: /var/tmp/magick-hFwaiVxX
Base filename: -
Format: PNM (Portable anymap)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Palette
Base type: TrueColor
Endianess: MSB
Colorspace: RGB
Depth: 32/16-bit
Channel depth:
red: 16-bit
green: 16-bit
blue: 16-bit
Channel statistics:
Red:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Green:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Blue:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Image statistics:
Overall:
min: -inf (-inf)
max: 0 (0)
mean: -inf (-inf)
standard deviation: nan (nan)
kurtosis: nan
skewness: nan
Histogram:
100: ( 0, 0, 0) #000000000000000000000000 rgb(-inf%,-inf%,-inf%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-459.507%,-459.507%,-459.507%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-390.193%,-390.193%,-390.193%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-349.646%,-349.646%,-349.646%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-320.878%,-320.878%,-320.878%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-298.564%,-298.564%,-298.564%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-280.331%,-280.331%,-280.331%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-264.916%,-264.916%,-264.916%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-251.563%,-251.563%,-251.563%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-239.785%,-239.785%,-239.785%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-229.249%,-229.249%,-229.249%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-219.718%,-219.718%,-219.718%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-211.017%,-211.017%,-211.017%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-203.012%,-203.012%,-203.012%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-195.602%,-195.602%,-195.602%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-188.702%,-188.702%,-188.702%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-182.249%,-182.249%,-182.249%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-176.195%,-176.195%,-176.195%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-170.479%,-170.479%,-170.479%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-165.071%,-165.071%,-165.071%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-159.942%,-159.942%,-159.942%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-155.062%,-155.062%,-155.062%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-150.41%,-150.41%,-150.41%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-145.965%,-145.965%,-145.965%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-141.708%,-141.708%,-141.708%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-137.626%,-137.626%,-137.626%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-133.704%,-133.704%,-133.704%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-129.929%,-129.929%,-129.929%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-126.292%,-126.292%,-126.292%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-122.783%,-122.783%,-122.783%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-119.393%,-119.393%,-119.393%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-116.114%,-116.114%,-116.114%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-112.939%,-112.939%,-112.939%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-109.861%,-109.861%,-109.861%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-106.876%,-106.876%,-106.876%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-103.977%,-103.977%,-103.977%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-101.16%,-101.16%,-101.16%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-98.4197%,-98.4197%,-98.4197%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-95.7528%,-95.7528%,-95.7528%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-93.1551%,-93.1551%,-93.1551%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-90.6232%,-90.6232%,-90.6232%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-88.1539%,-88.1539%,-88.1539%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-85.744%,-85.744%,-85.744%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-83.3909%,-83.3909%,-83.3909%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-81.0919%,-81.0919%,-81.0919%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-78.8445%,-78.8445%,-78.8445%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-76.6465%,-76.6465%,-76.6465%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-74.4959%,-74.4959%,-74.4959%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-72.3905%,-72.3905%,-72.3905%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-70.3285%,-70.3285%,-70.3285%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-68.3111%,-68.3111%,-68.3111%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-66.3308%,-66.3308%,-66.3308%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-64.3888%,-64.3888%,-64.3888%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-62.4839%,-62.4839%,-62.4839%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-60.6146%,-60.6146%,-60.6146%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-58.7796%,-58.7796%,-58.7796%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-56.9776%,-56.9776%,-56.9776%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-55.2076%,-55.2076%,-55.2076%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-53.4683%,-53.4683%,-53.4683%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-51.7588%,-51.7588%,-51.7588%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-50.078%,-50.078%,-50.078%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-48.425%,-48.425%,-48.425%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-46.7988%,-46.7988%,-46.7988%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-45.1987%,-45.1987%,-45.1987%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-43.6238%,-43.6238%,-43.6238%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-42.0733%,-42.0733%,-42.0733%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-40.5465%,-40.5465%,-40.5465%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-39.0427%,-39.0427%,-39.0427%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-37.5611%,-37.5611%,-37.5611%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-36.1011%,-36.1011%,-36.1011%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-34.6622%,-34.6622%,-34.6622%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-33.2437%,-33.2437%,-33.2437%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-31.845%,-31.845%,-31.845%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-30.4656%,-30.4656%,-30.4656%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-29.105%,-29.105%,-29.105%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-27.7626%,-27.7626%,-27.7626%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-26.438%,-26.438%,-26.438%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-25.1308%,-25.1308%,-25.1308%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-23.8404%,-23.8404%,-23.8404%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-22.5664%,-22.5664%,-22.5664%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-21.3085%,-21.3085%,-21.3085%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-20.0662%,-20.0662%,-20.0662%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-18.8392%,-18.8392%,-18.8392%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-17.6288%,-17.6288%,-17.6288%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-16.4311%,-16.4311%,-16.4311%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-15.2476%,-15.2476%,-15.2476%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-14.0779%,-14.0779%,-14.0779%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-12.9218%,-12.9218%,-12.9218%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-11.7789%,-11.7789%,-11.7789%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-10.6489%,-10.6489%,-10.6489%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-9.53148%,-9.53148%,-9.53148%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-8.42644%,-8.42644%,-8.42644%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-7.33348%,-7.33348%,-7.33348%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-6.25233%,-6.25233%,-6.25233%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-5.18275%,-5.18275%,-5.18275%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-4.12449%,-4.12449%,-4.12449%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-3.07731%,-3.07731%,-3.07731%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-2.04098%,-2.04098%,-2.04098%)
100: ( 0, 0, 0) #000000000000000000000000 rgb(-1.01528%,-1.01528%,-1.01528%)
100: ( 0, 0, 0) #000000000000000000000000 black

Furthermore, (even for PFM and MPC), even though in -fx the values are treated as 0 to 1 so that the parenthesis values in the min/max/mean statistic will be between -infinity and 0, should not the raw values for the ln of a gradient still be mostly positive, except for black for Q16 HDRI. The ln of all values between 1 and 65535 as raw values should be between 0 for ln(1) and about 11 for ln(65535). The only odd value would be ln(0)=-infinity. Thus the histogram should not be showing all zeros for the raw values nor negatives for percents (except for ln(0)). Please correct me if I am wrong.


All the above images, when saved to disk, they seem to display as totally black even if stretched with -auto-level.

For example:

convert grad.miff -fx "ln(u)" grad_hdri.pfm
and
convert grad_hdri.pfm -auto-level grad_hdri_al.pfm

P.S. When I recompile in non-hdri Q16 and redo these tests, all results are like the following with type bilevel and zero for min, max, mean.

Image: grad_nonhdri_ln.pfm
Format: PNM (Portable anymap)
Class: DirectClass
Geometry: 100x100+0+0
Resolution: 72x72
Print size: 1.38889x1.38889
Units: Undefined
Type: Bilevel
Base type: Bilevel
Endianess: MSB
Colorspace: RGB
Depth: 32/1-bit
Channel depth:
gray: 1-bit
Channel statistics:
Gray:
min: 0 (0)
max: 0 (0)
mean: 0 (0)
standard deviation: -0 (-0)
kurtosis: 0
skewness: 0
Histogram:
10000: ( 0, 0, 0) #000000000000000000000000 black


Should not one get values in range 0 to 11? (ln(1)=0, ln(65535)=11)


What am I misunderstanding?
User avatar
anthony
Posts: 8883
Joined: 2004-05-31T19:27:03-07:00
Authentication code: 8675308
Location: Brisbane, Australia

Re: strange verbose info from various image types in hdri

Post by anthony »

The PFM and MIFF in HDRI are showing NEGATIVE values. That naturally get clamped to 0 if a non-HDRI imagemagick or non-floating point image format is used!

Doh!

Remember values in -FX are 0 to 1 so ln(u) is a ln of a value from zero to one, which is naturally negative!
Anthony Thyssen -- Webmaster for ImageMagick Example Pages
https://imagemagick.org/Usage/
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: strange verbose info from various image types in hdri

Post by fmw42 »

anthony wrote:The PFM and MIFF in HDRI are showing NEGATIVE values. That naturally get clamped to 0 if a non-HDRI imagemagick or non-floating point image format is used!

Doh!

Remember values in -FX are 0 to 1 so ln(u) is a ln of a value from zero to one, which is naturally negative!

But MPC and TIFF also support HDRI, so should have the same results for -verbose info as PFM and MPC.

But what I don't understand further about -fx ln is that it is using the wrong part of the log. For raw image values between 0 and QR, one would expect positive values for the ln, not negative. The positive and negative parts of the ln curve are quite different. So (for discussion purposes):

1) Ignoring the fact that the wrong part of the ln curve is being used, at least, should there not be some scaling by QuantumRange for the raw values in either or both HDRI and non-HDRI, i.e.

ln(QR*x) so that one gets, ln(QR*0)=-inf, and ln(QR*1)=11. So for non-hdri, then all values should not be zero but should be clipped to range 0 to 11. This is only slightly better than all zeros as the dynamic range is still very small.

2) Alternately and more to the point, to make use of the positive part of the ln curve, should not one bias the value in the range 0-1 before calculating the ln such that the values 0->0 and 1->QR. One approximate way, is

QR*(ln(x+e-1)-.54

so that

x=0 results in QR*ln(e-1)-.54=0
x=1 results in QR*ln(e)-.54=65535-.54



Any way, as -fx ln seems to work now:

1) HDRI

-fx ln(u) for a gradient will result in image values -inf to 0

(every image will produce only negative results, somewhere between -inf and 0)

2) NON-HDRI

-fx ln(u) for a gradient will result in image values -inf to 0, but these then get clipped to all values equal zero

Thus for non-hdri, your image (no matter what) will always be black. This seems strange to me as then -ln(u) in non-hdri will always be a constant black which is kind of a useless situation as it makes no distinction between images.

Anthony or magick can you confirm this?
User avatar
anthony
Posts: 8883
Joined: 2004-05-31T19:27:03-07:00
Authentication code: 8675308
Location: Brisbane, Australia

Re: strange verbose info from various image types in hdri

Post by anthony »

That is exactly the behaviour I would expect to see with FX. The direct use of the math functions AS IS.
It is up to the FX expression to adjust ranges and bias of the results to get the output desired.

-evaluate and -function on the other hand is meant to provide reasonable results in one form or another.
That is why -evaluate has a multiplier constant for Sin and Cos functions, while -function provides even more controls for applying the function.

-fx should not change.

As for the behaviour of the different image types, I would expect it to depend on the type, and format definition.
Should MIFF output 'normalized values?

The PFM format has a scaling factor included in its file format, so it can store un-normalized values.
At this time the only control of that scaling for PbmPLus formats is depth.

MPC on the other hand is tied to the memory store for a specific IM installation so would not be normalized
Anthony Thyssen -- Webmaster for ImageMagick Example Pages
https://imagemagick.org/Usage/
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: strange verbose info from various image types in hdri

Post by fmw42 »

But MPC and TIFF also support HDRI, so should have the same results for -verbose info as PFM and MPC. Yet they are presenting results for stats and histogram as if they did not support HDRI values!
User avatar
magick
Site Admin
Posts: 11064
Joined: 2003-05-31T11:32:55-07:00

Re: strange verbose info from various image types in hdri

Post by magick »

Try this command:
  • convert grad.miff -fx "ln(u)" -define quantum:format=floating-point -depth 32 miff:- | identify -verbose - | more
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: strange verbose info from various image types in hdri

Post by fmw42 »

magick wrote:Try this command:
  • convert grad.miff -fx "ln(u)" -define quantum:format=floating-point -depth 32 miff:- | identify -verbose - | more

Yes, adding -define quantum:format=floating-point -depth 32 allows MIFF, TIFF as well as PFM and MPC to show the negative values in the stats.

I will try to modify the options page to emphasize this fact for MIFF and TIFF, if that is OK.

However, can you clarify for me why the raw values in the histogram under HDRI still show only 0. Should they not also show negatives? Or are the histogram raw values by design always going to treat the image as if non-HDRI?

Thanks
User avatar
magick
Site Admin
Posts: 11064
Joined: 2003-05-31T11:32:55-07:00

Re: strange verbose info from various image types in hdri

Post by magick »

Histograms use oct-trees and are restricted to pixel values from 0-QuantumRange. You can scale and translate yourself to get a historgram. Use something like -evaluate add 500 (returns positive values) -evaluate multiply 131 (scale to 0-65535).
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: strange verbose info from various image types in hdri

Post by fmw42 »

Histograms use oct-trees and are restricted to pixel values from 0-QuantumRange.
Thanks. I thought perhaps you scaled them to proper values in HDRI as the rgb values show negatives.

I will just note this.
User avatar
magick
Site Admin
Posts: 11064
Joined: 2003-05-31T11:32:55-07:00

Re: strange verbose info from various image types in hdri

Post by magick »

I thought perhaps you scaled them to proper values in HDRI as the rgb values show negatives.
Ideally but we have not gotten to full support of HDRI just yet.
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: strange verbose info from various image types in hdri

Post by fmw42 »

OK. I understand. Thanks for the reply and info. I will keep all this in mind.
Post Reply