The Bud Workshop Program

Prog thumb 1Prog thumb 2

The Bud Workshop (BW) program

The program was written in "steam" C (using MS Visual C++, v6.0, in 'C only' mode) for the Win32 platform—in other words, for 'Windows'—and should run in any version of Windows from '98 onwards.  (Sorry, I have nothing for the Mac, or for Linux. One day, perhaps...) Its image-processing makes heavy use of a dynamic link library, _ISource21.dll, from Smaller Animals Software. (I happily recommend this company to anyone writing image-processing software for Windows. They offer quality at very reasonable prices.) This DLL is included in the download, and must be on your system for the program to work.

Click to Download -  

!! 4th Feb '07 -- A big bug has been fixed !!
If you downloaded the buggy version before 4th February, 2007, please download the new version of (You need not re-download the other packages.) The instructions that follow below apply to the debugged version.

There is a help file, but it is not current, and badly needs updating. I hope to get this done at an early date! It is nevertheless offered for download in its present state to those who wish it, as it still has some applicability.

Click to Download -    

Spoken Help

There are *.wav files available. They contain comment and tips - spoken in the author's Scottish brogue, I regret - to be heard (at the user's option) while the program is running. They were developed to help overcome the difficulty of having help-screens overlapping and hiding the working screens to which they applied, but are somewhat rudimentary, and the program can do without them. Those who would like to try them can download them. They should reside in the same directory as the executable.

Click to Download -

Bud Archives

Bud Archives are an essential adjunct of the program.

The Workshop will (fairly politely) shut itself down if it cannot find at least one Bud Archive somewhere on the system.  Future versions will offer to create an (empty) archive on the system if none has been found, but the current version does not, so one must be created by the user manually.

It is simply a folder, which can be anywhere in the system (and/or on mapped network drives), and can have any name, provided that name contains the text, "Bud Archive", somewhere.  For example, "Main Bud Archive", or "Bud Archive Backup 2", or "Jacks Bud Archive recent" would all be found.

The Workshop searches specified drives for Archives and "valid" (properly named) bud files when it is started up, and updates the working Archive with new files that may have arrived since the last session, so the Archives are refreshed at every program launch, but new searches can be initiated in-session at any time.

The working Archive records all results obtained, when they are obtained, and these are fetched from it as and when needed by the various Workshop operations. (The Workshop can show and process images that are "invalidly" named, but the results are not recorded in the Archive.  This can be useful for testing, and for "dummy runs".)    


You will need some way to unzip (extract) the downloaded files.  "Winzip" is good.  All the extracted files can, and probably should, be placed in the same working directory, which can have any name you like, along with the executable.  I usually give it the same name as the executable - without the extension, of course.

The executable is called BWrecode.exe, and this is the file to click to launch the program. You might want to put a short-cut to it on the Desktop.

The Workshop places a small, "ini-style" file, called Bud32.bud, in the Windows directory. It holds a few details concerning the most recent session. If you uninstall the Workshop ( just a matter of deleting all the files in its working directory), you might want to delete this file too.

Basic Operation (That is, Minimal Help!)

What's in a Name?
(Romeo & Juliet, Wm Shakespeare)

The program works with images*.bmp or *.jpg) of real buds. In order that the bud images can be recognised by the Workshop, and remembered by it, they need to be "properly named".

A "proper name" has a prefix, followed by a mandatory underscore ('_'), followed by the "epoch" (civil date and time), followed by a period and the extension.

For example beech1_231206112325.jpg, would refer to a JPEG image of the single bud we choose to call beech1, obtained on 23 December 2006 at 23 minutes and 25 seconds past 11 o'clock in the morning. Note the contiguous, two-digit fields.

The time is on the 24 hour clock, and will usually be local.  If it isn't, the conventional 'Z' will (should) be appended to signify GMT.

The date is required, but the time is optional. If the time is included,  it must include both the hour and the minute, but need not have the seconds.  British conventions are followed. - DDMMYYhhmmss

If the time is "silly", or not given, the Workshop assumes mid-day.  So,

oak3_120103.bmp                    ( bud oak3 on 12th Jan 2003, time defaults to 12:00 noon local time)
birch5_0102071231z.jpg          ( bud birch5 on 1st Feb 2007 12:31 GMT )
bud1a_1201071020.jpg            ( bud bud1a on 12th Jan 2007 10:20 local time)          
b3_100999142032.jpg              ( bud b3 on 10th Sep 1999 14:20:32 local time)

are all valid names, whereas, bch-121299.jpg, or, graham_mugshot.bmp are not.

On Start-up

When the program starts, the Archivist appears at once,

expecting to do a search for bud files, and

you should at this point select a drive, or drives, to search,

then click on Find Items.

The trees will eventually show the items found in the search.

You may click on tree items, and you will receive the information the Archive carries on them.

If you click on an image item, you will see a list of paths to that image (usually just one).

If you click on a path in the list, the preview will show the image on that path,

and the Archivist will offer the option of opening that instance for work.

If you are opening the bud image ("an instance") for work for the first time ever, then use the "Load Inst" button.  You will be asked to select a "suite" from a drop-down list.

If, however, you are re-opening an instance, then a list of  "ini" paths will be available: the suite names form the 'tails' of these path-strings.  Click on the ini-path item that contains the name of the suite from which you wish to review results.  This actually does two things:

  • It displays a precis (taken from the ini file on the selected path) of the results obtained so far on the instance,
    in the drop-down combo box between the top two trees.
  • It enables the, "use \<suite-name>\", button , which carries the text of the selected <suite-name>.
Click on this button to re-load, and review and/or re-work, the instance.

Two Result Windows



















Once selected, the image opens in two windows, one on the left for interactive working, the other on the right for showing results. If some work has been done on that image in previous sessions, you will see the results of that work when the image opens. Otherwise, you can begin that work on the left image, and results will appear on the right image as they come.

The basic idea is to measure the bud at several heights between two "poles", which the user must place where he or she thinks they should be.

When all this has been done, the Workshop immediately and automatically finds the path curve between the given poles most nearly matching the measurements obtained, shows the curve, reports parameters, quality-of-fit numbers and so on, and records them in the working Archive for later recall and the use of various operations.

There are several result-files per bud per epoch.

These are ordered per prefix (bud-name) into series by epoch (this being the second of the main purposes of the Workshop: we want to see how things vary with time).


But there may be more than one result-set per series (perhaps arising from differing pole settings, for example), so the Workshop records these as "Suites", and each suite has a name, and every bud has at least one suite. When the Workshop encounters a bud for the first time, it automatically assigns a suite to it, and, most imaginatively, appends "default" to the bud's prefix as the suite name.  But a bud may have several suites, so when the workshop is asked to open a particular bud for work, it must under some circumstances ask for the suite, too.  The choices are presented in a combo box, and the user may select from them.

Place the Poles

At this point, if an unworked bud image is up, the Poles should be placed first (in any order).

-Left click on either "Hi Pole", or "Lo Pole" to get a rotating cursor,

-Use the mouse to steer this cursor to where you think the pole should go and

-Left click to leave the pole there. (You may re-do it as often as you feel you must to get it right.)

-Do this for both poles.

The Pole buttons flash, "Not Set", if the poles have not been placed, and bear yellow ticks (check marks) if they have.

There are then two ways to take or adjust measurements.

(1) Left Click
on the "Scan" button.  This initiates Manual  Measurement.

Once the poles are both placed, buttons automatically appear down the left side of the measurement image, one per measurement height (default number of these is 7).  Click on one to begin measuring at its height. Each button has two "lights", one for the left bud edge, one for the right.  They "light up" when the corresponding measurements have been taken.  The Workshop assists by holding the cursor on the level ("level-locking"), and it detects which side is being measured, so all the user need do is point at the bud's edges and left-click.

However, you will notice that the Workshop changes the cursor to a "star-burst" with the word, "hit",  below it, when it thinks the cursor is sitting on an edge.  There's some chance it's the wrong edge, so it's advisory only, but if you and the Workshop agree here, it's a good idea to accept the Workshop's estimate: it will likely be more accurate than yours!  In case of dispute, or uncertainty, or when the Workshop is stumped, reference can be made to a little window travelling above the cursor which displays a magnified version of the region of interest.

linescanbuttons There is also a button marked, "Graphs", at the top of the measurement window.  If you click on it while in measurement mode, a window appears on the right which shows two graphs: the uppermost, in blue, is of  the actual luminances in the line currently being scanned in the image.  The lower, in red, is the absolute differential (rate of change) of the same data.  There is a hair-cursor on both traces matching the horizontal position of the mouse cursor on the image.  The differential goes to a peak when the scan traverses an edge, so when the hair-cursor is in such a peak, the mouse cursor is very likely on an edge. It is an additional check on accuracy.

Incidentally, the left/right arrow-keys can be used to move the cursor, too, (faster if CTRL is held down, too) which is sometimes easier than using the mouse, and you may press the SPACE BAR, or ENTER,  to accept a measurement,  instead of clicking.

This is all a little laborious, and, for speed, it is preferable to use

Method (2) Profile Tracking - if it works. Sometimes it doesn't, or works poorly, depending on the quality of the image. The Workshop traces the profiles, either semi- or fully-automatically (depending on which mouse button is held down). One selects a profile by button, places the tracking-cursor at the bottom of it so as to catch it between the little arrows.  One then may press and hold down either the left or the right mouse button.

- If one presses the right, the Workshop moves the mouse and attempts to trace the profile by itself.
- If one presses the left, the user must push the mouse.  The Workshop assists by holding the cursor to the profile, if it can.

Sometimes the cursor loses the profile, and cannot be made to refind it.  The only resort in such a case is method 1, manual measurement.

When the traces, or tracks, are available, the Workshop automatically measures the bud using these traces.  There is a bunch of buttons at the top of of the measurement window to control all this.

A measurement session can combine both methods.  New users would probably do best to begin with manual measurement, just to get a feeling for what is involved in it, and to see what problems arise. When measurements are completed, the bud is automatically and immediately analysed, as mentioned above. Appropriate entries also appear in the Archivist's trees.

Some further detail will be found in the help. 

Please tell me about problems with the program - there are bound to be some!  gc7742 AT googlemail DOT com (written thus to thwart spiders and spammers, etc.,: change appropriately!)

Good luck!
Graham Calderwood.