Changelog
Source:NEWS.md
pliman 2.1.0
CRAN release: 2023-10-14
New functions
A new
mosaic_*()
family of functions to handle orthomosaics from RGB and multispectral images.object_export()
andobject_export_shp()
to export objects from single images to multiple images.image_augment()
to augment an image by rotating it multiple times.
Bug fixes
- Setting
save_image = TRUE
inmeasure_disease_byl()
now exports the processed images to a local directory, allowing the use ofsad()
call to the created object.
Minor improvements
- Arguments r, g, b, re, and nir now included in
analyze_objects()
,analyze_objects_shp()
, andimage_view()
, allowing to correctly choose the image band. -
image_segment_mask()
now has acol_background
argument. - Argument
width_at
included inanalyze_objects()
.
pliman 2.0.1
CRAN release: 2023-09-11
New functions
-
object_export_shp()
andobject_export()
to export objects from an image to multiple images in the current working directory. -
plot_index_shp()
to plot rectangles on top of an RGB image, where each rectangle is colored based on a quantitative variable.
Bug fixes
- Fix bug in
poly_center()
by calling the column position instead column name (X1
)
pliman 2.0.0
CRAN release: 2023-07-15
New functions
analyze_objects_iter()
to execute an interactive section ofanalyze_objects()
.measure_disease_byl()
to measure disease severity ‘by
l
eaf’ in an image with several leaves.object_split()
to split multiples objects of an image into a list of images.pca()
,plot.pca()
,get_biplot()
as helper functions to perform Principal Component Analysis.rownames_to_column()
,column_to_rownames()
,separate_col()
,round_cols()
as helper functions to manipulate data.A set of
poly_*()
function to analyze polygons. All of them are based on a set of coordinate points describing the edge of the object(s). See ?utils_polygon
for more details.get_wd_here()
andset_wd_here()
to deal with working directories.apply_fun_to_imgs()
to apply a function (or functions) to a set of images stored in the working directory.make_brush()
,make_mask()
, andimage_segment_mask()
to create masks and segment images based on such a mask.image_segment_manual()
,image segment kmeans()
, andimage_segment_mask()
to perform image segmentation in different ways.-
A new family of
efourier_*()
functions to performs Elliptical Fourier Analysis.-
efourier()
: Elliptical Fourier Analysis -
efourier_coefs()
: Get Fourier coefficients -
efourier_error()
: Erros between the original and reconstructed outline -
efourier_inv()
: Inverse Elliptical Fourier Analysis -
efourier_norm()
: Normalized Fourier coefficients -
efourier_power()
: Power in Fourier Analysis -
efourier_shape()
: Draw shapes based on Fourier coefficients
-
-
A new family of
landmarks_*()
functions to handle landmarks-
landmarks()
: Create image landmarks -
landmarks_add()
: Artificially inflates the number of landmarks -
landmarks_angle()
: Angles between landmarks -
landmarks_dist()
: Distances between landmarks -
landmarks_regradi()
: Pseudolandmarks with equally spaced angles
-
object_edge()
to detect edges in images using Sobel-Feldman Operator.-
A new family of
*_shp()
functions to analyze shape files.-
image_shp()
to construct a shape file from an image. -
object_split_shp()
to splits image objects based on a shapefile. -
analyze_objects_shp()
to analyze objects using shapefiles. -
measure_disease_shp()
to measure disease using shapefiles.
-
New
plot_index()
function to plot an image index using raster package, and optionaly using the mapview package to show the image index.New
image_view()
function to create an interactive map view of an image. This function allows users to interactively edit and analyze an image using mapview and mapedit packages.New
image_prepare_mv()
function to prepare an image to be analyzed foranalyze_objects_shp()
. This function aligns and crops the image using either base or mapview visualization.
New features
New
viewer
option added. Now, iterative functions such aspick_palette()
andmeasure_disease_iter()
have an argumentviewer
. If not provided, the value is retrieved usingget_pliman_viewer()
. This option controls the type of viewer to use for interactive plotting. The available options are “base” and “mapview”. If set to “base”, the base R graphics system is used for interactive plotting. If set to “mapview”, the mapview package is used, allowing the users to draw shapes like points and polygons with mapedit package. To set this argument globally for all functions in the package, you can use theset_pliman_viewer()
function. For example, you can runset_pliman_viewer("mapview")
to set the viewer option to “mapview” for all functions.Haralick’s features that quantify pixel texture for image objects were included.
Several measures were added in
analyze_objects()
. The function now wraps somepoly_*()
functions to compute shape measures such as width, length, elongation, circularity. Haralick’s features are now computed by default. . This improvement was at cost of a slight increase in computation time.analyze_objects()
,measure_disease()
, andmeasure_disease_byl()
have now afilter
argument that applies a median filtering in the binary mask. This is useful to reduce the noise in the segmentation of objects.Arguments
reference_larger
andreference_smaller
were included inanalyze_objects()
indicating when the larger/smaller object in the image must be used as the reference object.Arguments
efourier
andnharm
included inanalyze_objects()
. Ifefourier = TRUE
, Elliptical Fourier analysis is computed for each object depending on the number of harmonics (nharm
).Logical arguments
reference_larger
andreference_smaller
included inanalyze_objects()
. Those indicates when the larger/smaller object in the image must be used as the reference object. This only is valid whenreference = TRUE
andreference_area
indicates the area of the reference object. IMPORTANT. Whenreference_smaller
is used, objects with an area smaller than 1% of the mean of all the objects are ignored. This is used to remove possible noise in the image such as dust. So, be sure the reference object has an area that will be not removed by that cutpoint.-
Rcpp
andRcppArmadillo
dependencies were included, allowing the implementation ofC++
code. This will dramatically reduce the time computing of some functions/procesures. As an example, we wave.- Reduction in time processing from more than 5 minutes to less than 1 second using the new
object_rgb()
function to extract the RGB values from an image (1445 x 1084) with ~1400 objects. - Reduction in time processing of the set of
*_poly()
functions.
- Reduction in time processing from more than 5 minutes to less than 1 second using the new
Minor changes
-
get_measures()
now remove known objects from the results when using theid
argument. - The right-hand of argument
measure
inget_measures()
now accepts a numeric object stored in the global environment. -
analyze_objects()
now returns the objectsobject_index
andobject_rgb
when the argumentpattern
is used. Thanks to João Paulo Oliveira Ribeiro for alerting me regarding this issue. - New argument
reference
inanalyze_objects()
to adjust measures using a reference object in the image. - Argument
object_index
inanalyze_objects()
now recognizes the names of built-in indexes (see ?pliman_indexes()
). -
plot.image_index()
not limits the number of pixels to reduce plotting time. -
show_image
argument changed withplot
to standardize the argument across functions. -
rgb_to_hsb()
optimized usingC++
. - Change
rows
andcols
withnrow
andncol
, respectively, in functionsanalyze_objects_shp()
,image_shp()
,measure_disease_shp()
, andobject_split_shp()
, to standardize the arguments across functions.
pliman 1.1.0
CRAN release: 2021-12-10
New functions
-
measure_disease_iter()
to measure disease in an interactive section. -
pick_count()
to count objects in an image manually. -
pick_palette()
to create an image palette by picking up color point(s) from the image -
pick_rgb()
to pick up the RGB values from selected point(s) in the image. -
summary_index()
to summary the index either between and within objects. -
pliman
now exports the foward-pipe operator%>%
. Code from poorman package.
Minor changes
- Deprecated functions in the last version (
count_objects()
,image_show()
,leaf_area()
,objects_rgb()
,prop_segmented()
, andsymptomatic_area()
) were removed. - Use Bootstrap 5 from pkgdown 2.0.0 in the package site.
pliman 1.0.0
CRAN release: 2021-11-09
New functions
-
analyze_objects()
is now used as the main function to compute the number and shape of objects. -
measure_disease()
is now used as the main function to perform phytopatometry studies. The function can compute symptomatic area, as well as the number and shape of lesions. -
image_segment_iter()
is used to performs iterative image segmentation. -
conv_hull()
,poly_area()
,poly_mass()
,poly_spline()
,plot_contour()
, andplot_ellipse()
as utilities for analyzing polygons. -
dpi()
to compute the resolution (dots per inch) of an image. -
tune_tolerance()
for tunning thetolerance
parameter.
Deprecated functions.
-
objects_rgb()
will be depracated in the future. Now, to compute an index for each object use theobject_index
argument inanalyze_objects()
, for example,analyze_objects(object_index = "B")
. -
leaf_area()
will be depracated in the future. Now, combineanalyze_objects()
withget_measures()
to obtain the area and shape of objects (leaves). -
prop_segmented()
is now deprecated in favour ofimage_segment_iter()
. -
count_lesions()
is now deprecated. Now, to compute the number and shape of lesions, use the argumentshow_features = TRUE
inmeasure_disease()
. -
image_show()
is now deprecated in favour ofplot()
.
Minor improvements
- Include
fill_hull
argument insymptomatic_area()
andcount_lesions()
- Improve
image_contrast()
function to avoid error regarding image resolution. - New argument
subfolder
inimage_export()
to export an image to a subfolder. - Now
EBImage
installation is checked when pliman is installed. -
image_pliman()
now returns the image object instead of the path to the image. So, it is not necessarily to call it withinimage_import()
.
pliman 0.3.0
CRAN release: 2021-06-10
New functions
-
image_autocrop()
for automatic image cropping. -
image_filter()
to perform median-based filtering. -
image_contrast()
to improve contrast by performing adaptive histogram equalization -
object_coord()
to get the object coordinates and (optionally) draw a bounding rectangle around multiple objects in an image. -
object_id()
to get the object identification in an image. -
object_isolate()
to isolate an object from an image. -
prop_segmented()
to perform (iterative) image segmentation with pixels proportion.