Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The new Images is here #577

Merged
merged 38 commits into from
Jan 30, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0171772
Initial rebase on JuliaImages packages
timholy Sep 14, 2016
9b171c1
Move old tests to test/old and get "core" tests so they complete (wit…
timholy Sep 17, 2016
da7384c
Get the core tests passing and add a label to each test
timholy Sep 18, 2016
febbbd9
Get the map tests passing
timholy Sep 18, 2016
a3c4d38
Get overlays tests passing
timholy Sep 18, 2016
bf57678
Get the algorithms tests passing
timholy Sep 20, 2016
0873754
Get edge tests working
timholy Sep 20, 2016
9cf9f41
Introduce NumberLike and RealLike typealiases to simplify code
timholy Sep 24, 2016
fdcbb03
Get the corner tests working
timholy Sep 24, 2016
74a49d2
Eliminate most deprecated names from src
timholy Sep 26, 2016
e565f57
Fix a method-sorting bug (immap) and an ambiguity (restrict)
timholy Sep 26, 2016
aeac21c
Fix an eltype problem from changes in promotion rules in colors
timholy Sep 26, 2016
6ca7aa0
Fix parallel test
timholy Sep 26, 2016
3c034fc
Fix a (new) ambiguous-Dict error
timholy Sep 27, 2016
79648ba
Change widthheight test to expect vertical-major
timholy Sep 28, 2016
25ab8af
Deprecate the MapInfo mechanism
timholy Sep 28, 2016
ea15d99
Get writemime tests passing
timholy Oct 7, 2016
e8ea87b
Re-fix overlay
timholy Oct 7, 2016
ad505c9
Reimplement overlays with StackedView
timholy Oct 9, 2016
82bd702
Reimplement LabeledArray
timholy Oct 9, 2016
7cf82f1
Update REQUIRE
timholy Oct 11, 2016
1959bef
Some fixes to avoid warnings from RGB24/UInt32 convert->reinterpret d…
timholy Oct 11, 2016
3272083
Tweak .travis.yml for images-next
timholy Oct 12, 2016
21e1870
Update the NEWS
timholy Oct 12, 2016
e914b5e
Send 8-bit colors to Jupyter
timholy Oct 16, 2016
51784f3
Move MapInfo exports to deprecated.jl
timholy Oct 17, 2016
9ec9287
Fix change in broadcast in julia 0.6
timholy Oct 17, 2016
932b9c2
Rework interface to blob_LoG and reimplement findlocalextrema
timholy Oct 18, 2016
13742a8
Fix deprecations for compact printing in FixedPointNumbers
timholy Jan 28, 2017
fba3559
Update Images docstring and make small NEWS tweaks
timholy Jan 28, 2017
d3da965
more FPN fixes
timholy Jan 28, 2017
a0d155a
Update README to link to JuliaImages docs
timholy Jan 28, 2017
664cb15
Fix #187
timholy Jan 28, 2017
652f2da
Turn off 0.4 testing on AppVeyor
timholy Jan 29, 2017
474ee48
For now, run test suite with ImageMagick on OSX
timholy Jan 29, 2017
ceb8d6f
Improve type-stability of entropy
timholy Jan 30, 2017
1060fb7
Add cross references to docstrings
timholy Jan 30, 2017
7394ee0
Add tips for upgrading to new Images
timholy Jan 30, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,15 @@ os:
- linux
- osx
julia:
- 0.4
- 0.5
- nightly
notifications:
email: false
script:
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
- julia -e 'Pkg.clone(pwd()); Pkg.build("Images")'
- julia -e 'Pkg.test("Images", coverage=true)'
# script:
# - if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
# - julia -e 'Pkg.clone(pwd()); Pkg.build("Images")'
# - julia -e 'Pkg.test("Images", coverage=true)'
after_success:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You seemed to have turn Travis testing off accidentally in a0d155a

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you comment out or delete the entire script: section it defaults to a version that should be equivalent to this standard boilerplate

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it's still running, it's just using the default script.

- if [ $TRAVIS_JULIA_VERSION = "0.4" ] && [ $TRAVIS_OS_NAME = "linux" ]; then
- if [ $TRAVIS_JULIA_VERSION = "0.5" ] && [ $TRAVIS_OS_NAME = "linux" ]; then
julia -e 'cd(Pkg.dir("Images")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder())';
fi
- julia -e 'Pkg.clone("https://github.com/MichaelHatherly/Documenter.jl")'
- julia -e 'cd(Pkg.dir("Images")); include(joinpath("docs", "make.jl"))'
143 changes: 143 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# v0.6

Images has been rewritten essentially from scratch for this
release. The major goals of the release are:

- More consistent treatment of spatial orientation
- Preserve key properties upon indexing
- Intuitive handling of indexed (colormap) images
- Better support for a wider range of array types
- Improvements in type-stability of many operations
- Improvements in the user experience through easier interfaces, more
informative error messages, and improved printing/display
- Improvements in documentation
- For users of former releases of Images, as smooth an upgrade path as
can be practically provided, through deprecations or informative
error messages

Key changes (of which many are breaking):

- Many properties that were formerly in the dictionary (colorspace,
spatial orientation, pixel spacing, and the presence/absence of a
time dimension) are now encoded by the type system. The `ImageAxes`
package (a small extension of `AxisArrays`) is now used for several
of these properties. This fixes the former loss of information like
spatial orientation when images were indexed (`img[5:20, 5:20])`.

- The `Image` type (an array + dictionary) has been renamed
`ImageMeta`, and should be much less needed now that most properties
can be encoded with `AxisArrays`. `ImageMeta` is still useful if you
need to encode information like date/time at which the image was
taken, sky coordinates, patient IDs, or experimental
conditions. Otherwise, it's recommended to use regular `Array`s, or
`AxisArrays` if you need to endow axes with "meaning."

- Full commitment to the use of `Colorant` types (as defined by the
`ColorTypes` and `Colors` packages) for encoding color
images. Arrays are no longer allowed to declare that they use one
axis (dimension) to store color information, i.e., a `m×n×3 Float32`
array would be displayed as a 3d grayscale image, not an RGB
image. This choice facilitates efficient and type-stable indexing
behavior and enhances consistency. "Lazy" interconversion between
arbitrary numeric arrays and color arrays are provided by two new
view types, `colorview` and `channelview`, defined in the
`ImageCore` package. These types hopefully remove any awkwardness
from the new requirement.

- For an indexed (colormap) image `imgi`, indexing with `imgi[i,j]`
used to return the *index*, not the *pixel value*. This operation now
returns the *pixel value*, with the consequence that indexed images
largely act like the array they represent. Indexed images are defined
and handled by the `IndirectArrays` package.

- Image filtering has been greatly improved. `imfilter_fft` and
`imfilter_gaussian` have both been rolled into `imfilter`. FFT/FIR
filtering is chosen automatically (though a choice can be specified)
depending on kernel size, aiming for the best performance in all
cases and a consistent interface for specifying defaults. The main
filtering algorithms have been considerably improved, particularly
for separable kernels, and feature cache-efficient tiling and
multithreading. The performance enhancement is as large as 10-fold
in some cases, particularly when starting Julia with multiple
threads. Certain constructs for specifying boundary conditions have
been deprecated and replaced with dispatch-leveraging
alternatives. Specification of standard kernels has been changed
considerably, and has been split out into two modules, `Kernel` and
`KernelFactors`, both defined in the `ImageFiltering` package. In
particular note the `IIRGaussian` types which contain the
functionality that was formerly in `imfilter_gaussian`.

- Nonlinear filtering operations have been added with
`mapwindow`. Among the supported functions is `median!`, thus
providing an implementation of median-filtering.

- Previous versions of Images used `reinterpret` for several
operations, but `reinterpret` fails for most `AbstractArray`s other
than `Array`. This release implements alternative mechanisms (e.g.,
based on the `MappedArrays` package) that work for any
`AbstractArray` type. (When it would help performance, `reinterpret`
is still used when applicable.) Consequently, this release features
better support for a wider range of array types.

- Several improvements have been made to the handling of fixed-point
numbers, which permit the use of 8- and 16-bit types that act
similarly to floating-point numbers and which permit a consistent
criterion for "black" (0.0) and "white" (1.0) independent of storage
type. Specifically:

+ Trying to convert out-of-bounds values now gives an informative
error message rather than just `InexactError`
+ Several bugs in FixedPointNumber operations have been fixed, and
such operations are more consistent about return types
+ FixedPointNumbers are now printed more compactly

- A new package, `ImageTransformations`, is underway for rotation,
resizing, and other geometric operations on images.

- Many deprecation warnings were designed to help users of the current
Images package transition to the new framework.

Other changes (all of which are breaking):

- The gradient components returned by `imgradients` match the
dimensions of the input; in `g1, g2, ... = imgradients(img,
...)`, `g1` corresponds to the gradient along the first dimension,
`g2` along the second, and so on.

- `sobel` and other filters have been normalized so that the returned
"gradient components" are scaled to estimate the actual
derivatives. For example, for `sobel` the normalization factor is
1/8 compared to earlier releases.

- `extrema_filter` has been deprecated in favor of
`mapwindow(extrema, A, window)`. However, this returns an array of
`(min,max)` tuples rather than separate `min`, `max` arrays. This is
intended to transition towards a future API where one can pass `min`
or `max` in place of `extrema` to obtain just one of
these. Currently, you can retrieve the `min` array with `first.(mm)`
and the `max` array with `last.(mm)`.

- The old `extrema_filter` discards the edges of the image, whereas
the new one (based on `mapwindow`) returns an array of the same size as the input.

- The output of `blob_LoG` is now a `Vector{BlobLoG}`, a new exported
immutable, rather than the old tuple format.

- `findlocalextrema` now returns a `Vector{CartesianIndex{N}}` rather
than a `Vector{NTuple{N,Int}}`. This makes it ready for use in efficient
indexing.

Changes in related packages:

- NRRD.jl has been extensively revamped. The NRRD format lacks an
official test suite, and hence it was always uncertain how well the
package supported "the standard" (to the extent that there is
one). However, it was discovered that `unu make` can generate files
that can serve as a test suite, and using this strategy several
incompatibilities in our former version were noted and fixed. It is
possible that old .nrrd files written by julia might not be readable
without making manual edits to the header.

# Older versions

For earlier history, please see the git revision history.
Loading