Open Access Article
This Open Access Article is licensed under a Creative Commons Attribution-Non Commercial 3.0 Unported Licence

CrystalCV: a computer vision system for analysis of crystallization experiments

Nicholas Sandora and Makhsud I. Saidaminov*ab
aDepartment of Electrical and Computer Engineering, University of Victoria, Victoria, British Columbia V8P 5C2, Canada
bDepartment of Chemistry, University of Victoria, Victoria, British Columbia V8P 5C2, Canada. E-mail: msaidaminov@uvic.ca

Received 24th March 2026 , Accepted 16th June 2026

First published on 18th June 2026


Abstract

Understanding and controlling single crystal growth is critical for synthesizing high-quality, defect-free materials like metal halide perovskites; however, monitoring these processes is hindered by a lack of tools capable of persistently tracking multiple crystals. We present crystallization computer vision (CrystalCV), an accessible, Python-based computer vision system for monitoring crystallization processes. Using color segmentation and centroid tracking, CrystalCV continuously extracts time-series data for multiple crystals. We demonstrate its utility through three case studies in single crystal metal halide perovskite crystallization: quantifying MAPbBr and CsPbBr3 growth rate uniformity, investigating reactive thermal control to eliminate secondary nucleations, and tracking phase evolution in FAPbI3 thin crystals. CrystalCV provides a versatile, low-barrier platform for characterizing and optimizing complex crystal growth.


1 Introduction

Crystallization from solution is a crucial step in many organic and inorganic synthesis processes, providing a path to a pure form of a material with minimal defects. Leveraging the fact that many processes in chemistry rely on visual cues, several recent works have demonstrated the utility of vision systems in monitoring and controlling chemical reactions.1–3 Such vision approaches are well suited to the study of crystallization, owing to their consistent geometry. The precise measurement of growth rates, nucleation rates, and polymorph development is critical to understanding and improving these processes.4 A number of works have applied image processing approaches to the study of turbulent crystallizers, producing crystal size and type distributions.5–7 Single crystal growth has likewise been studied with works primarily focusing on image processing for the determination of facet growth rates of an individual crystal,8,9 and recent work applying a robotic system for polymorph identification.10 However, existing approaches lack the ability to track multiple crystals persistently throughout a complex growth process and lack an accessible interface.

A single crystal growth application of particular interest is that of the metal halide perovskites. These are a promising class of semiconductors that demonstrate high performance and can be synthesized by solution processes.11 While many applications make use of perovskite polycrystalline films (e.g., photovoltaics, LEDs), perovskite single crystals demonstrate the best electrical properties due to their lack of grain boundaries, and show promise in ionizing radiation detection applications.12,13 In the case of perovskite single crystal growth, crystallizations are often performed with no or minimal mixing of the solution, as disruption of the growth solution leads to lower quality crystals with poor facet stability.14 The result is a static, mass-transport-limited crystallization process, which suffers from poor control of growth rate and nucleation. These qualities make the synthesis of large, high-quality single crystals needed for radiation detectors challenging.

Here we report a crystallization computer vision (CrystalCV) system, building on our prior work in applying computer vision to control perovskite single crystal growth rates.15 The core imaging process involves color-based image segmentation coupled to a centroid tracking algorithm. The resulting system can independently track characteristics such as location, area, growth rate, and aspect ratio of any number of crystals in the imaging frame. Functions are implemented to automatically detect crystal merging events between separate crystals, and smooth growth rate information. In addition to being a powerful tool for the analysis of growth rates, the system also provides insight into the nucleation process, with the ability to track the rate and location of secondary nucleation events.

2 Methods

Fig. 1 shows a system-level block diagram of CrystalCV. This can be divided into several discrete steps, each of which is explained in the following section. CrystalCV is implemented in Python and split into three key files: TrackCrystals.py implements image processing and tracking using OpenCV,16 producing a crystallization database for each input video. Postprocessing.py detects and eliminates merged crystals, smooths growth rate data, and refines the data output by the tracking script. CrystalCV.py implements a GUI for ease of use.
image file: d6dd00140h-f1.tif
Fig. 1 CrystalCV software process diagram showing (a) data input and image processing, involving masking of the background, contrast and color enhancement, segmentation and contouring, then tracking of the contours over time to produce time series crystallization data. (b) Data postprocessing steps, consisting of crystal merge detection, removal of crystals which are only present for a short amount of time, filtering based on aspect ratio and extent, and smoothing.

2.1 Data input

It is important to first describe the required imaging and experimental conditions for CrystalCV to properly function. Images must be from a static camera of sufficient resolution to capture crystallization processes. Controlled lighting, consisting of steady diffused light, is ideal to reduce the incidence of lighting-related errors in the tracking process. For applications where measurement of areas and growth rates is desired, a reference calibration must be performed on the system to determine the conversion factor between pixels and real size. This reference calibration object should be of known dimensions and placed at the same distance as the objects to be tracked for maximum accuracy. Depending on the apparatus, it may be necessary to further calibrate the imaging system to eliminate the effect of perspective.

Crystals should have sufficient contrast from their solution to be easily distinguished based on color. In cases where the target is translucent, obtaining a consistent contour is very difficult. The tracking system is tolerant to a small degree of motion; however, in situations where there is a large amount of fast motion, the centroid tracking system is likely to lose its tracking ability. In all case studies shown here, static crystallizations were analyzed.

2.2 Image enhancement and color segmentation

The full pipeline from input image to crystal contours occurs in the TrackCrystals.py file, shown in Fig. 1(a). A circular mask is first applied to limit the area to only the crystallization dish. Several basic image processing options (brightness, contrast, saturation) are included to adjust the image frames and maximize the separation between crystals and the background. To properly measure and track each crystal element, we must first segment the crystals from their surroundings, generating a binary mask which represents crystal and non-crystal regions. Segmentation is performed by setting a valid color range in either the RGB or HSV color space. Any pixel with a color value within the acceptable range is considered part of the crystal. This approach is favorable for perovskite crystals, which often show strong colors due to their energy bandgaps. However, it does lead to sensitivity to phenomena such as colored shadows and reflections. These will be erroneously recognized as part of the crystal, and avoiding this effect requires careful tuning of the valid color range and controlled lighting.

While many approaches make use of advanced deep learning techniques for segmentation, we believe that a color threshold segmentation system is preferable for the tracking of certain high-contrast crystallization reactions due to the deterministic nature of the segmentation, the ability to operate without training a model, and the ability to tightly control lighting conditions in a crystallization apparatus.

2.3 Contour generation

Once a binary mask of all crystals has been created, contours for each crystal are generated by following the edge of each light area. The function used in OpenCV is cv.findContours(), which returns a list of contours defined by their border points. Taking advantage of the fact that MA/FA/CsPbBr3 perovskite crystals are orthorhombic or cubic, a simple rectangular bounding box can be applied to fit the contour. This can be overlaid on the original input image to verify correctness, as shown in Fig. 1(a).

2.4 Centroid tracking

Once contours have been generated, basic properties such as area, perimeter, aspect ratio, and extent can be obtained. In the case of a growth process where there is only ever one crystal present, tracking these parameters over time is simply achieved by analyzing the contour properties over time. But in the more common case where numerous crystals are present, time series properties such as growth rate and nucleation rate require a method of uniquely identifying each contour. CrystalCV implements a centroid tracking algorithm, which records the central coordinate of each contour and compares it against all central contour coordinates in future frames, and finds the closest one.17 An illustration of the process is provided in Fig. 1(a), and the complete algorithm used can be found in SI (Algorithm S1). The result of this tracking step for one reaction recording will be a database of crystal identifiers with time series data which can be processed and analyzed.

2.5 Filtering

In single crystal synthesis applications, detection of merging events between crystals is desirable. Without careful monitoring, it is possible that a small secondary nucleation collides with the desired crystal, disrupting the purity of the crystal. This can go unnoticed, and lead to quality issues.14 CrystalCV is capable of automatically detecting when a crystal merge event has occurred and can filter out these merged crystals from further analysis. Crystal mergers can be recognized by two factors: the sudden disappearance of an existing contour and a sudden spike in the size of another contour. By comparing the size of each contour throughout the process and identifying area spikes that exceed a predefined threshold, crystals experiencing merge events can be filtered out, as shown in Fig. 1(b).

Growth rates and aspect ratios rely on analysis of the generated and tracked contours. For simple cubic and orthorhombic shapes, a bounding rectangle can be fit to the contour, allowing for easy capturing of key dimensions. Growth rates can then be determined by using the time series data for a given contour. Deriving the growth rate directly from noisy area measurements can amplify fluctuations in the output, as seen in Fig. 1(b). CrystalCV implements smoothing options, including linear regression and Savitzky–Golay filtering18 to eliminate noise. The resulting smoothed growth rate curves can be seen in Fig. 1(b).

2.6 Analysis tools

The crystal experiment database produced by CrystalCV can be analyzed by a number of methods. The software includes an interactive plotting interface for visualizing area and growth rate over time plots, allowing for live adjustment of filter parameters. Nucleation rate and location can be easily derived by noting the rate at which new items appear in the database over time, and by analyzing the location when that occurs, allowing for the generation of nucleation rate plots and heatmaps. Nucleation can only be detected once a crystal has reached sufficient size to be captured by the camera system. As such, the reported nucleation rate will differ from the true nucleation rate, as crystals must survive long enough to grow to sufficient size for detection. This remains useful for comparative studies, such as finding additives that may reduce nucleation with high throughput screening.

2.7 Interface

CrystalCV is implemented as a python script, which takes in video sequences and configuration files and returns annotated videos and tracking data. To facilitate easier interaction with the software, a graphical user interface (GUI) was developed using PyQt, which serves as an interactive method of building the configuration to be sent to the script, and provides simple tools for interpreting and graphing results. The main interface is shown in Fig. 2. This GUI is useful for tuning the color threshold-based segmentation and pre-processing steps, as it can be adjusted while seeing the output.
image file: d6dd00140h-f2.tif
Fig. 2 CrystalCV user interface, showing tracked and tagged crystals in the main window, with controls for masking, image enhancement, and segmentation visible for optimizing configuration prior to tracking.

3 Case studies

The following section details three separate application cases of the CrystalCV software to the static crystallization of perovskite single crystals. CrystalCV is used to analyze a large quantity of Cs/MAPbBr3 crystallizations to determine growth rate uniformity, is applied to analyze a reactive nucleation control method for MAPbBr3 growth and is used to identify the development of undesirable phases in the growth of FAPbI3.

3.1 Tracking growth trends in (Cs/MA)PbBr3 crystallization

A quantitative approach, powered by CrystalCV, can provide answers to two research questions about the static crystal growth of MA/CsPbBr3 crystals: Whether all crystals within a crystallization apparatus grow at the same rate, and where and when secondary nucleation events occur. While McCabe's Δ-L law suggests that crystals under the same conditions should grow at the same rate regardless of size, this assumes uniform conditions throughout the crystallization environment.19 The unmixed state of the crystallization apparatus used in FRC suggests that this is likely not the case, and that there is a spread in growth rates during crystallization which can be quantified using CrystalCV (Fig. 3(c)). Such a non-uniform environment may also cause nucleation due to local variations in supersaturation, and this can be mapped spatially and temporally using CrystalCV. A representative image from such a crystallization is shown in Fig. 3(a). Data from 129 crystallization experiments was used in this analysis, consisting of 104 MAPbBr3 growth experiments and 25 CsPbBr3 experiments. Crystallizations were all by the flux regulated crystallization (FRC) method described in our prior work,15 in which the growth rate of a target crystal is controlled using a syringe pump coupled to a control loop. A diagram showing the FRC apparatus is shown in Fig. S1.
image file: d6dd00140h-f3.tif
Fig. 3 (a) Schematic and representative image of MAPbBr3 crystallization with case study questions. (b) Process flow with CrystalCV. (c) Growth rate vs. time plot for a crystallization with 5 crystals, showing spread in growth rate for crystals in the same dish. (d) RSD analysis results for Cs/MAPbBr3 crystallizations. (e) Nucleation heatmap for all crystallizations. (f) Normalized nucleation frequency histogram for all crystallizations.

Fig. 3(b) illustrates the CrystalCV workflow. Given the large quantity of crystallizations analyzed, batch processing via the script was utilized rather than the GUI. First, an analysis of growth rate uniformity was performed. The postprocessing script was used to refine the output data, eliminating merged crystals and crystals that had high aspect ratios or poor bounding box fits. Growth rates of these crystals were then measured by taking the derivative of the side length and smoothing the result. The resulting growth rate curves, after filtering and postprocessing, are shown in Fig. S2. To quantify the spread, the relative standard deviation (RSD) of the growth rates as defined in eqn (1) was measured between all crystals present for each point in time when more than one crystal was present.

 
image file: d6dd00140h-t1.tif(1)

σ = Standard deviation, σ = mean

The resulting RSD distributions for CsPbBr3 and MAPbBr3 crystallizations are shown in Fig. 3(d). It was observed that both datasets have RSD values typically between 10-30%. While MAPbBr3 exhibited a slightly higher median RSD (21.4%) than CsPbBr3 (16.1%), a Welch's t-test (p = 0.069) confirmed this apparent difference in growth rate dispersion is not statistically significant. To illustrate the practical implication of this, for a given MA crystallization where the growth rate of the main crystal is controlled at 0.2 mm h−1, this result would suggest that the growth rate within one standard deviation of other crystals in solution would range from 0.157 mm h−1 to 0.242 mm h−1. Our prior work suggests that tightly maintaining control of a low growth rate is important for maintaining quality in perovskite single crystals.15,20

Further, nucleation data generated by CrystalCV was used to spatially and temporally map the incidence of secondary nucleations. The full dataset was used, and the resulting heatmap is shown in Fig. 3(e). Nucleation tends to occur less in the center of the crystallization dish, possibly due to the depletion of solute in this area due to the presence of the large target crystal. The nucleation rate over time was then analyzed. To compensate for differences in experiment durations, the normalized nucleation rate was calculated by dividing the total number of nucleation events measured in each hour by the number of experiments where that time was reached. Fig. 3(f) shows a histogram of nucleations by time, indicating that by 10 hours into an FRC growth experiment, 1 nucleation per hour can be expected, motivating the development of methods of preventing and eliminating such events.

3.2 Indication of nucleation control

As mentioned, static crystallization of large perovskite single crystals suffers from persistent issues with secondary nucleation, impeding the growth of large crystals. Existing additive and apparatus-based methods21,22 can reduce the rate of incidence of these events but cannot eliminate them once they have arisen. This application focuses on using CrystalCV to assess the ability of a simple reactive thermal nucleation control method for MAPbBr3 growth.

Any method that seeks to selectively eliminate nucleation should target a property that is unique to secondary nucleations. In this case, the defining characteristic of a secondary nucleation is that it is very small compared to the primary crystal. This has two key effects:

• As surface area is proportional to the square of the side length, whereas volume is proportional to the cube, the surface area to volume ratio of a small crystal will be much larger than that of a large crystal.

• The crystal systems studied here exhibit inverse temperature solubility, in which a decrease in temperature results in an increase in solubility.23 That is, if the solution adjacent to the crystal cools sufficiently, the crystal will begin to dissolve. Conductive heat transfer is a function of the surface area, and total thermal energy is a function of the volume. As a result, a larger surface area to volume ratio would be expected to result in faster dissolution due to rapid heat loss.

From this, we can hypothesize that once heat is removed from such a crystallization setup, there will be some latency period in which the heat of the crystal will maintain the local temperature of the solution prior to beginning dissolution, and that the duration of this delay will be proportional to the size of the crystal, as illustrated in Fig. 4(a). If this period is sufficiently long, it may be possible to selectively eliminate small secondary nucleations without substantial effects on the larger crystals. Investigation of this effect requires a time-resolved measurement of the area of multiple crystals with a variety of sizes during a cooling cycle, which CrystalCV is well suited for.


image file: d6dd00140h-f4.tif
Fig. 4 (a) Thermal cycling concept, showing the difference between main and secondary crystals. (b) Before/after images of thermal cycling test. (c) Area vs. Time plot for 6 largest crystals, with off time highlighted. (d) Area at start of test vs. time when dissolution began for 6 largest crystals. (e) Initial crystal area vs. fraction of area remaining after test for all crystals.

An MAPbBr3 evaporative crystallization was performed, with the FRC apparatus as used in our prior work. After 25.5 hours of crystallization, numerous secondary nucleations occurred with a variety of sizes. The hotplate was then shut off, and the system was allowed to proceed for 1 hour and 20 minutes before heat was reapplied. Fig. 4(b) shows a before and after image of the thermal cycle test highlighting that nucleations dissolve and do not reappear as the crystallization proceeds. Fig. 4(c) shows the observed area of the largest 6 crystals over time during the cycling test, with the time where the hotplate was off highlighted. The area of the largest crystal was manually measured to provide error bounds, the details of which can be found in the SI (Fig. S3).

There is an evident effect on the growth of all crystals, with areas beginning to drop after heat is removed. It was observed that there was some latency for certain crystals. Fig. 4(d) shows the time after the removal of heat when the crystal reached its maximum size and began to dissolve. The largest crystal did not start to dissolve until an hour after removal of heat, and during this time most other crystals had already begun or had finished dissolving. This is promising, as it implies that a rapid cycle can be performed without dissolving the main crystal if it is large enough. By plotting the percentage of area left after the test against the crystal size at the start of the test, the size-dependent effect of the thermal cycle can be observed. As can be seen in Fig. 4(e), all crystals less than 0.13 ± 0.04 mm2 in area were eliminated. Once heat was reapplied, the crystals which had disappeared did not reappear, indicating complete removal, not merely dissolution beyond detectable size.

This result, coupled with the result from the prior analysis demonstrating that secondary nucleation events tend to occur after approximately 20 hours (at which point the main crystal will be substantially larger than nucleations), suggests that this may be an effective method of nucleation control. Because this assessment is based on a single trial, these findings represent a preliminary observation that necessitates further experimental validation. Nevertheless, this case study demonstrates how CrystalCV can be used to track time dependent variables to evaluate and improve crystal growth processes.

3.3 Tracking crystal phase development in FAPbI3 crystallization

This case study departs somewhat from the prior two, as it relates to single crystal perovskite growth for photovoltaic applications, but it is included to demonstrate the flexibility of CrystalCV beyond the growth of large cubic MA/CsPbBr3 crystals.

Perovskites derive a great deal of their fame from their potential as emerging solar cell materials. However, the polycrystalline nature of most perovskite cells introduces grain boundaries, which are known to impede charge transport and reduce efficiency. As such, growth of thin-film single crystals for solar applications is an active area of research.12 FAPbI3 grown by space confined ITC is a competitive composition.24 However, it is plagued by the incidence of two distinct phases:25 the desired photoactive α cubic phase, and a problematic photoinactive δ needle-like phase, as can be seen in Fig. 5(a). In this case, we apply CrystalCV to the task of identifying the distribution and incidence rate of each phase throughout a recorded ITC growth process.


image file: d6dd00140h-f5.tif
Fig. 5 (a) Imaging setup and output for FAPbI3 crystallization by space-confined inverse temperature crystallization. (b) Experiment process within CrystalCV. (c) Criteria for phase identification. (d) Contour-annotated images of crystallization showing phase identification. (e) Aspect ratio histogram for all crystals. (f) Phase evolution over time.

The process within CrystalCV is shown in Fig. 5(b). Color segmentation was easily achieved as the black FAPbI3 crystals are easily distinguished from the yellow solution. Determination of phase was performed by fitting a bounding box to each contour. The cubic phase is expected to have the following properties: aspect ratio of the bounding box should be equal, and extent (degree to which the contour fills the bounding box) should be high. This contrasts with the needle phase, which will have an unequal aspect ratio and poor extent, as demonstrated in Fig. 5(c). Fig. 5(d) shows the result of this segmentation, showing successful delineation between the two phases. Plots of the aspect ratio distribution and phase counts over time are shown in Fig. 5(e and f). This demonstrates the value of CrystalCV in quantifying the extent of δ phase generation, as well as the rate at which such crystals nucleate throughout the growth process. This analysis can be used to quantify mitigation measures and is an example of the utility of the software system beyond the original design case of MA/FA/CsPbBr3 crystallization.

4 Conclusions

The CrystalCV platform has been shown to be useful in three separate contexts relating to perovskite crystallization. With regards to the static growth of Cs/MAPbBr3, CrystalCV was used to validate that the dynamics of static crystallization are difficult to predict in a deterministic manner, with considerable spread between the growth rates of crystals sharing the same dish. This motivates the further development of camera-driven active control systems for such crystallizations. Thermal cycling shows potential for selectively removing existing nucleation events; however, this observation requires further validation to eliminate possible coincidental factors. Should it be demonstrated that the effect can be achieved consistently, it would motivate the development of an enhanced control system that integrates CrystalCV as a promising avenue of future work. A system like our FRC system, capable of tracking and controlling the growth of crystals by vision-based tracking, that can also detect and react to nucleation events, could be a pathway to very large perovskite single crystals by solution methods with an inexpensive apparatus. CrystalCV has also demonstrated utility beyond its intended design use in the analysis of FAPbI3 crystal growth for thin film solar cells, providing a quantitative measurement of the incidence rate of undesirable phases. These case studies demonstrate that CrystalCV is a versatile tool for characterizing and optimizing crystal growth processes. A comparative table, demonstrating the unique advantages of CrystalCV as they relate to other applications of computer vision for crystallization, is shown in Table S1. The low barrier to entry, requiring only a camera to record the process and some basic calibration, makes this a promising tool for adoption in any context where the tracking of multiple crystals over time is desired.

With regards to future work to improve the system, key issues include enhanced segmentation of crystals from the background and fitting contours for more complex crystal morphologies. The computer vision techniques employed in CrystalCV fall under a ‘classical’ approach to image processing. More modern deep learning-based methods of segmentation are now available, such as the Segment Anything Model (SAM) series from Meta, which show high performance under a wide variety of scenarios.26 Such segmentation approaches are much more resilient to changes in lighting and opacity than color-based segmentation and have been applied to the segmentation of crystals in several works.5,10 However, for this application, the classical approach was chosen as it is deterministic. If a given pixel is within the threshold, it will be masked and considered part of the contour, and this consistency is guaranteed between frames assuming lighting conditions remain constant. Very slow crystallizations often have their growth rate values hinge on individual pixels, so even a small amount of noise in these values introduced by nondeterministic segmentation methods could be detrimental to the core functionality. Another added advantage to a non-deep learning approach is the lack of a need to train a model on existing data. However, future improvements to the software could include deep learning-based segmentation provided it shows sufficient accuracy. As mentioned, single crystal growth is favorable for computer vision applications owing to the strict geometry constraints of crystals, as determined by their structure. With regards to its application, CrystalCV was optimized for use with cubic and orthorhombic crystals oriented perpendicular to the camera. Future work includes implementation of more advanced fitting methods demonstrated in prior works such as the Hough transform to work with other crystal geometries and provide precise measurements of facet growth rates.8

Author contributions

N. S. wrote the original draft. M. I. S. reviewed and edited the manuscript.

Conflicts of interest

M. I. S. is a co-founder of AY-Sensors Inc., which commercializes perovskite single crystals for radiation detection applications. The other authors declare no competing financial interest.

Data availability

CrystalCV, and scripts for producing the plots shown in the article are available at https://github.com/nsandor/CrystalCV and archived on Zenodo at https://doi.org/10.5281/zenodo.20655010. The source dataset used for analysis is available via Zenodo at https://doi.org/10.5281/zenodo.19140131.

Supplementary information (SI): SI figures and a SI video. See DOI: https://doi.org/10.1039/d6dd00140h.

Acknowledgements

We thank Dr Sergey Dayneko, Aleksandra Gracheva, and Parinaz Moazzezi for providing experimental data for the assessment of CrystalCV. N. S. thanks the Natural Sciences and Engineering Research Council of Canada (CGS-M) for funding. M. I. S. thanks the Natural Sciences and Engineering Research Council of Canada (RGPIN-2025-04895), and the Canada Research Chair Program (CRC-2024-00264) for financial support.

References

  1. R. El-khawaldeh, A. Mandal, N. Yoshikawa, W. Zhang, R. Corkery, P. Prieto, A. Aspuru-Guzik, K. Darvish and J. E. Hein, Device, 2024 DOI:10.1016/j.device.2024.100404.
  2. J. Ren, A. Mandal, R. El-khawaldeh, S. Xuan Leong, J. Hein, A. Aspuru-Guzik, L. Nalpantidis and K. Darvish, Digit. Discov., 2026, 5, 630–642 Search PubMed.
  3. R. El-khawaldeh, M. Guy, F. Bork, N. Taherimakhsousi, K. N. Jones, J. M. Hawkins, L. Han, R. P. Pritchard, B. A. Cole, S. Monfette and J. E. Hein, Chem. Sci., 2024, 15, 1271–1282 Search PubMed.
  4. J. Garside, A. Mersmann and J. Nývlt, Measurement of Crystal Growth and Nucleation Rates, IChemE, 2002 Search PubMed.
  5. V. Manee, W. Zhu and J. A. Romagnoli, Ind. Eng. Chem. Res., 2019, 58, 23175–23186 CrossRef CAS.
  6. Z. Gao, Y. Wu, Y. Bao, J. Gong, J. Wang and S. Rohani, Cryst. Growth Des., 2018, 18, 4275–4281 Search PubMed.
  7. S. Schorsch, J.-H. Hours, T. Vetter, M. Mazzotti and C. N. Jones, Comput. Chem. Eng., 2015, 75, 171–183 Search PubMed.
  8. C. A. Offiler, A. J. Cruz-Cabeza, R. J. Davey and T. Vetter, Cryst. Growth Des., 2022, 22, 2837–2848 Search PubMed.
  9. C. Jiang, C. Y. Ma, T. A. Hazlehurst, T. P. Ilett, A. S. M. Jackson, D. C. Hogg and K. J. Roberts, Cryst. Growth Des., 2024, 24, 3277–3288 Search PubMed.
  10. E. C. Lee, D. Salley, A. Sharma and L. Cronin, Digit. Discov., 2026, 5, 734–742 RSC.
  11. L. Zi, X. Fan, L. Liu, S. Guan, H. Wei, J. Chen, X. Zhuang and W. Xu, Chem. Sci., 2026, 17, 4395–4427 Search PubMed.
  12. B. Turedi, M. N. Lintangpradipto, O. J. Sandberg, A. Yazmaciyan, G. J. Matt, A. Y. Alsalloum, K. Almasabi, K. Sakhatskyi, S. Yakunin, X. Zheng, R. Naphade, S. Nematulloev, V. Yeddu, D. Baran, A. Armin, M. I. Saidaminov, M. V. Kovalenko, O. F. Mohammed and O. M. Bakr, Adv. Mater., 2022, 34, 2202390 Search PubMed.
  13. K. S. Bayikadi, Z. Liu, J. A. Peters, I. Pandey, P. Q. Vuong, S. Imam and M. G. Kanatzidis, Adv. Mater., 2025, 37, e10931 CrossRef CAS PubMed.
  14. Z. Shi, H. Liu, H. Jiao, M. Li, Z. Ni, L. Zhao and J. Huang, Nat. Synth., 2025, 4, 1088–1094 Search PubMed.
  15. Y. Haruta, H. Ye, P. Huber, N. Sandor, A. Pavesic Junior, S. Dayneko, S. Qiu, V. Yeddu and M. I. Saidaminov, Nat. Synth., 2024, 3, 1212–1220 Search PubMed.
  16. G. Bradski, Dr. Dobb'S J. Softw. Tools Prof. Program., 2000, vol. 25, pp. 120–123 Search PubMed.
  17. A. Rosebrock, PyImageSearch, https://pyimagesearch.com/2018/07/23/simple-object-tracking-with-opencv/, accessed May 2026 Search PubMed.
  18. A. Savitzky and M. J. E. Golay, Anal. Chem., 1964, 36, 1627–1639 CrossRef CAS.
  19. W. L. McCabe, Ind. Eng. Chem., 1929, 21, 30–33 Search PubMed.
  20. T. Pretto, S. Dayneko, A. P. Junior, N. Sandor, A. Hart, Y. Haruta, M. Bazalova-Carter, M. J. L. Santos and M. I. Saidaminov, Adv. Funct. Mater., 2026, 36, 2506188 CrossRef CAS.
  21. H. Yin, M. Liao, Y. Shi, Z. Liu, H. Li, S. He, Z. Zheng, L. Xu, J. Tang and G. Niu, Adv. Mater., 2025, 37, 2415957 CrossRef CAS PubMed.
  22. L. Wang, Y. Yan, M. Bu, J. Wang, L. Li, Y. Li, H. Liu, H. Zhang, X. Pi, D. Yang and Y. Fang, Adv. Funct. Mater., 2025, 35, 2415378 Search PubMed.
  23. M. I. Saidaminov, A. L. Abdelhady, G. Maculan and O. M. Bakr, Chem. Commun., 2015, 51, 17658–17661 Search PubMed.
  24. B. Shao, X. Song, H. Zhu, Y. A. Bioud, W. Wu, M. Abulikemu, H. Saiari, S. Aqeel, I. Gereige, O. F. Mohammed and O. M. Bakr, Chem. Soc. Rev., 2025, 54, 9939–9977 RSC.
  25. Y. Liang, F. Li, X. Cui, T. Lv, C. Stampfl, S. P. Ringer, X. Yang, J. Huang and R. Zheng, Nat. Commun., 2024, 15, 1707 CrossRef CAS PubMed.
  26. N. Carion, L. Gustafson, Y.-T. Hu, S. Debnath, R. Hu, D. Suris, C. Ryali, K. V. Alwala, H. Khedr, A. Huang, J. Lei, T. Ma, B. Guo, A. Kalla, M. Marks, J. Greer, M. Wang, P. Sun, R. Rädle, T. Afouras, E. Mavroudi, K. Xu, T.-H. Wu, Y. Zhou, L. Momeni, R. Hazra, S. Ding, S. Vaze, F. Porcher, F. Li, S. Li, A. Kamath, H. K. Cheng, P. Dollár, N. Ravi, K. Saenko, P. Zhang and C. Feichtenhofer, arXiv, 2025, preprint, arXiv.2511.16719,  DOI:10.48550/arXiv.2511.16719.

This journal is © The Royal Society of Chemistry 2026
Click here to see how this site uses Cookies. View our privacy policy here.