-
Notifications
You must be signed in to change notification settings - Fork 143
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
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 9b171c1
Move old tests to test/old and get "core" tests so they complete (wit…
timholy da7384c
Get the core tests passing and add a label to each test
timholy febbbd9
Get the map tests passing
timholy a3c4d38
Get overlays tests passing
timholy bf57678
Get the algorithms tests passing
timholy 0873754
Get edge tests working
timholy 9cf9f41
Introduce NumberLike and RealLike typealiases to simplify code
timholy fdcbb03
Get the corner tests working
timholy 74a49d2
Eliminate most deprecated names from src
timholy e565f57
Fix a method-sorting bug (immap) and an ambiguity (restrict)
timholy aeac21c
Fix an eltype problem from changes in promotion rules in colors
timholy 6ca7aa0
Fix parallel test
timholy 3c034fc
Fix a (new) ambiguous-Dict error
timholy 79648ba
Change widthheight test to expect vertical-major
timholy 25ab8af
Deprecate the MapInfo mechanism
timholy ea15d99
Get writemime tests passing
timholy e8ea87b
Re-fix overlay
timholy ad505c9
Reimplement overlays with StackedView
timholy 82bd702
Reimplement LabeledArray
timholy 7cf82f1
Update REQUIRE
timholy 1959bef
Some fixes to avoid warnings from RGB24/UInt32 convert->reinterpret d…
timholy 3272083
Tweak .travis.yml for images-next
timholy 21e1870
Update the NEWS
timholy e914b5e
Send 8-bit colors to Jupyter
timholy 51784f3
Move MapInfo exports to deprecated.jl
timholy 9ec9287
Fix change in broadcast in julia 0.6
timholy 932b9c2
Rework interface to blob_LoG and reimplement findlocalextrema
timholy 13742a8
Fix deprecations for compact printing in FixedPointNumbers
timholy fba3559
Update Images docstring and make small NEWS tweaks
timholy d3da965
more FPN fixes
timholy a0d155a
Update README to link to JuliaImages docs
timholy 664cb15
Fix #187
timholy 652f2da
Turn off 0.4 testing on AppVeyor
timholy 474ee48
For now, run test suite with ImageMagick on OSX
timholy ceb8d6f
Improve type-stability of entropy
timholy 1060fb7
Add cross references to docstrings
timholy 7394ee0
Add tips for upgrading to new Images
timholy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 boilerplateThere was a problem hiding this comment.
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.