https://wiki.panotools.org/api.php?action=feedcontributions&user=Pablo&feedformat=atomPanoTools.org Wiki - User contributions [en]2024-03-29T15:55:16ZUser contributionsMediaWiki 1.35.3https://wiki.panotools.org/index.php?title=Cpfind&diff=13024Cpfind2011-01-21T08:59:18Z<p>Pablo: /* Feature matching */</p>
<hr />
<div>= General and description =<br />
'''Cpfind''' is a control point detector for [[hugin]]. It expects a project file as input and write a project file with control points on success. The general usage is<br />
cpfind -o output.pto input.pto<br />
Internal the control point detector algorithm is divided into 2 parts: <br />
* The first step is the feature description: In this step the images of the project file are loaded and so called keypoints are searched. They describe destinctive features in the image. Cpfind is using a gradient based descriptor for the feature description of the keypoints. <br />
* In a second step, the feature matching, all keypoints of two images are matched against each other to find features which are on both images. If this matching was successfull two keypoints in the two images become one control point.<br />
<br />
= Usage =<br />
== Rectilinear and fisheye images ==<br />
Cpfind can find control points in rectilinear and fisheye images. To achieve good control points images with a high horizontal field of view (e.g. ultra wide rectilinear or fisheye) are therefor remapped into a conformal space (cpfind is using the [[Projection#Stereographic_projection|stereographic projection]]) and the feature matching occurs in this space. Before writing the control points the coordinates are remapped back to the image space. This happens automatic depending on the information about the lens in the input project file. So check that your input project file contains reasonable information about the used lens.<br />
<br />
'''WARNING:''' cpfind in hugin 2010.4 has some bugs and won't work properly with fisheye images. Use a 2010.5 development snapshot (rev c137328f1418, from 2011-01-20) or wait for the next release.<br />
<br />
== Using celeste ==<br />
Outdoor panorama often contains clouds. Clouds are bad areas for setting control points because they are moving object. Cpfind can use the same algorithm as [[celeste_standalone]] to masked out areas which contains clouds. (This is only done internal for the keypoint finding step and does not change the alpha channel of your image. If you want to generate a mask image use [[celeste_standalone]]). To run cpfind with celeste use<br />
cpfind --celeste -o output.pto input.pto<br />
Using '''cpfind''' with integrated celeste should be superior against using '''cpfind''' and [[celeste_standalone]] sequential. When running '''cpfind with celeste''' areas of clouds, which often contains keypoints with a high quality measure, are disregarded and areas without clouds are used instead. When running '''cpfind without celeste''' also keypoints on clouds are found. When afterwards running [[celeste_standalone]] these control points are removed. In the worst case all control points of a certain image pair are removed.<br />
<br />
So running '''cpfind with celeste''' leads to a better "control point quality" for outdoor panorama (e.g. panorama with clouds). Running '''cpfind with celeste''' takes longer than '''cpfind''' alone. So for indoor panorama this option does not need to specified (because of longer computation time).<br />
<br />
The celeste step can be fine tuned by the parameters --celesteRadius and --celesteThreshold.<br />
<br />
== Matching strategy ==<br />
=== All pairs ===<br />
This is the default matching strategy. Here all image pairs are matched against each other. E.g. if your project contains 5 images then '''cpfind''' matches the image pairs: 0-1, 0-2, 0-3, 0-4, 1-2, 1-3, 1-4, 2-3, 2-4 and 3-4<br />
<br />
This strategy works for all shooting strategy (single-row, multi-row, unordered). It finds (nearly) all connected image pairs. But it is computational expensive for projects with many images, because it test many image pairs which are not connected.<br />
<br />
=== Linear match ===<br />
<br />
This matching strategy works best for single row panoramas:<br />
cpfind --linearmatch -o output.pto input.pto<br />
This will only detect matches between adjacent images, e.g. for the 5 image example it will matches images pairs 0-1, 1-2, 2-3 and 3-4. The matching distance can be increased with the switch --linearmatchlen. E.g. with --linearmatchlen 2 '''cpfind''' will match a image with the next image and the image after next, in our example it would be 0-1, 0-2, 1-2, 1-3, 2-3, 2-4 and 3-4.<br />
<br />
=== Multirow matching===<br />
<br />
This is an optimized matching strategy for single and multi-row panorama:<br />
cpfind --multirow -o output.pto input.pto<br />
The algorithm is the same as described in [[Hugin_Parameters_for_Control_Point_Detectors_dialog#Multi-row_panorama|multi-row panorama]]. By integrating this algorithm into '''cpfind''' it is faster by using several cores of modern CPUs and don't caching the keypoints to disc (which is time consuming). If you want to use this multi-row matching inside [[hugin]] set the control point detector type to [[Hugin_Parameters_for_Control_Point_Detectors_dialog#All_images_at_once|All images at once]].<br />
<br />
=== Keypoints caching to disc ===<br />
<br />
The calculation of keypoints takes some time. So '''cpfind''' offers the possibility to save the keypoints to a file and reuse them later again. With --kall the keypoints for all images in the project are saved to disc. If you only want the keypoints of particular image use the parameter -k with the image number:<br />
cpfind --kall input.pto<br />
cpfind -k 0 -k 1 input.pto<br />
The keypoint files are saved by default into the same directory as the images with the extension .key. In this case no matching of images occurs and therefore no output project file needs to specified. If '''cpfind''' finds keyfiles for an image in the project it will use them automatically and not run the feature descriptor again on this image.<br />
If you want to save them to annother directory use the --keypath switch. <br />
<br />
This procedure can also be automate with the switch --cache:<br />
cpfind --cache -o output.pto input.pto<br />
In this case it tries to load existing keypoint files. For images, which don't have a keypoint file, the keypoints are detected and saved to the file. Then it matches all loaded and newly found keypoints and writes the output project.<br />
<br />
If you don't need the keyfile longer, the can be deleted automatic by<br />
cpfind --clean input.pto<br />
<br />
= Extended options =<br />
== Feature description ==<br />
<br />
For speed reasons '''cpfind''' is using images, which are scaled to their half width and height, to find keypoints. With the switch --fullscale '''cpfind''' is working on the full scale images. This takes longer but can provide "better" and/or more control points.<br />
<br />
The feature description step can be fine-tuned by the parameters:<br />
<br />
--sieve1width <int> Sieve 1: Number of buckets on width (default: 10)<br />
<br />
--sieve1height <int> Sieve 1: Number of buckets on height (default: 10)<br />
<br />
--sieve1size <int> Sieve 1: Max points per bucket (default: 100)<br />
<br />
--kdtreesteps <int> KDTree: search steps (default: 200)<br />
<br />
--kdtreeseconddist <double> KDTree: distance of 2nd match (default: 0.25)<br />
<br />
'''Cpfind''' stores maximal sieve1width * sieve1height * sieve1size keypoints per image. If you have only a small overlap, e.g. for 360 degree panorama shoot with fisheye images, you can get better results if you increase sieve1size. You can also try to increase sieve1width and/or sieve1height.<br />
<br />
Effectively cpfind splits your image in rectangles: sieve1width horizontally by sieve1height vertically. It will try to find sieve1size interest points. This ensures a reasonably uniform distribution of interest points over your image. These features will be matched in the matching step. With the default parameters, up to 10000 interest points will be used in the feature matching step.<br />
<br />
== Feature matching ==<br />
<br />
Fine-tuning of the matching step by the following parameters:<br />
<br />
--ransaciter <int> Ransac: iterations (default: 1000)<br />
<br />
--ransacdist <int> Ransac: homography estimation distance threshold (pixels) (default: 25)<br />
<br />
--minmatches <int> Minimum matches (default: 4)<br />
<br />
--sieve2width <int> Sieve 2: Number of buckets on width (default: 5)<br />
<br />
--sieve2height <int> Sieve 2: Number of buckets on height (default: 5)<br />
<br />
--sieve2size <int> Sieve 2: Max points per bucket (default: 1)<br />
<br />
'''Cpfind''' generates between minmatches and sieve2width * sieve2height * sieve2size control points between an image pair. (Default setting is between 4 and 25 (=5*5*1) control points per image pair.) <br />
If less then minmatches control points are found for a given image pairs these control points are disregarded and this image pair is considered as not connected. For narrow overlaps you can try to decrease minmatches, but this increases the risk of getting wrong control points.<br />
<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Cpfind&diff=13023Cpfind2011-01-21T08:58:28Z<p>Pablo: /* Feature description */ clarified sieve1 parameters.</p>
<hr />
<div>= General and description =<br />
'''Cpfind''' is a control point detector for [[hugin]]. It expects a project file as input and write a project file with control points on success. The general usage is<br />
cpfind -o output.pto input.pto<br />
Internal the control point detector algorithm is divided into 2 parts: <br />
* The first step is the feature description: In this step the images of the project file are loaded and so called keypoints are searched. They describe destinctive features in the image. Cpfind is using a gradient based descriptor for the feature description of the keypoints. <br />
* In a second step, the feature matching, all keypoints of two images are matched against each other to find features which are on both images. If this matching was successfull two keypoints in the two images become one control point.<br />
<br />
= Usage =<br />
== Rectilinear and fisheye images ==<br />
Cpfind can find control points in rectilinear and fisheye images. To achieve good control points images with a high horizontal field of view (e.g. ultra wide rectilinear or fisheye) are therefor remapped into a conformal space (cpfind is using the [[Projection#Stereographic_projection|stereographic projection]]) and the feature matching occurs in this space. Before writing the control points the coordinates are remapped back to the image space. This happens automatic depending on the information about the lens in the input project file. So check that your input project file contains reasonable information about the used lens.<br />
<br />
'''WARNING:''' cpfind in hugin 2010.4 has some bugs and won't work properly with fisheye images. Use a 2010.5 development snapshot (rev c137328f1418, from 2011-01-20) or wait for the next release.<br />
<br />
== Using celeste ==<br />
Outdoor panorama often contains clouds. Clouds are bad areas for setting control points because they are moving object. Cpfind can use the same algorithm as [[celeste_standalone]] to masked out areas which contains clouds. (This is only done internal for the keypoint finding step and does not change the alpha channel of your image. If you want to generate a mask image use [[celeste_standalone]]). To run cpfind with celeste use<br />
cpfind --celeste -o output.pto input.pto<br />
Using '''cpfind''' with integrated celeste should be superior against using '''cpfind''' and [[celeste_standalone]] sequential. When running '''cpfind with celeste''' areas of clouds, which often contains keypoints with a high quality measure, are disregarded and areas without clouds are used instead. When running '''cpfind without celeste''' also keypoints on clouds are found. When afterwards running [[celeste_standalone]] these control points are removed. In the worst case all control points of a certain image pair are removed.<br />
<br />
So running '''cpfind with celeste''' leads to a better "control point quality" for outdoor panorama (e.g. panorama with clouds). Running '''cpfind with celeste''' takes longer than '''cpfind''' alone. So for indoor panorama this option does not need to specified (because of longer computation time).<br />
<br />
The celeste step can be fine tuned by the parameters --celesteRadius and --celesteThreshold.<br />
<br />
== Matching strategy ==<br />
=== All pairs ===<br />
This is the default matching strategy. Here all image pairs are matched against each other. E.g. if your project contains 5 images then '''cpfind''' matches the image pairs: 0-1, 0-2, 0-3, 0-4, 1-2, 1-3, 1-4, 2-3, 2-4 and 3-4<br />
<br />
This strategy works for all shooting strategy (single-row, multi-row, unordered). It finds (nearly) all connected image pairs. But it is computational expensive for projects with many images, because it test many image pairs which are not connected.<br />
<br />
=== Linear match ===<br />
<br />
This matching strategy works best for single row panoramas:<br />
cpfind --linearmatch -o output.pto input.pto<br />
This will only detect matches between adjacent images, e.g. for the 5 image example it will matches images pairs 0-1, 1-2, 2-3 and 3-4. The matching distance can be increased with the switch --linearmatchlen. E.g. with --linearmatchlen 2 '''cpfind''' will match a image with the next image and the image after next, in our example it would be 0-1, 0-2, 1-2, 1-3, 2-3, 2-4 and 3-4.<br />
<br />
=== Multirow matching===<br />
<br />
This is an optimized matching strategy for single and multi-row panorama:<br />
cpfind --multirow -o output.pto input.pto<br />
The algorithm is the same as described in [[Hugin_Parameters_for_Control_Point_Detectors_dialog#Multi-row_panorama|multi-row panorama]]. By integrating this algorithm into '''cpfind''' it is faster by using several cores of modern CPUs and don't caching the keypoints to disc (which is time consuming). If you want to use this multi-row matching inside [[hugin]] set the control point detector type to [[Hugin_Parameters_for_Control_Point_Detectors_dialog#All_images_at_once|All images at once]].<br />
<br />
=== Keypoints caching to disc ===<br />
<br />
The calculation of keypoints takes some time. So '''cpfind''' offers the possibility to save the keypoints to a file and reuse them later again. With --kall the keypoints for all images in the project are saved to disc. If you only want the keypoints of particular image use the parameter -k with the image number:<br />
cpfind --kall input.pto<br />
cpfind -k 0 -k 1 input.pto<br />
The keypoint files are saved by default into the same directory as the images with the extension .key. In this case no matching of images occurs and therefore no output project file needs to specified. If '''cpfind''' finds keyfiles for an image in the project it will use them automatically and not run the feature descriptor again on this image.<br />
If you want to save them to annother directory use the --keypath switch. <br />
<br />
This procedure can also be automate with the switch --cache:<br />
cpfind --cache -o output.pto input.pto<br />
In this case it tries to load existing keypoint files. For images, which don't have a keypoint file, the keypoints are detected and saved to the file. Then it matches all loaded and newly found keypoints and writes the output project.<br />
<br />
If you don't need the keyfile longer, the can be deleted automatic by<br />
cpfind --clean input.pto<br />
<br />
= Extended options =<br />
== Feature description ==<br />
<br />
For speed reasons '''cpfind''' is using images, which are scaled to their half width and height, to find keypoints. With the switch --fullscale '''cpfind''' is working on the full scale images. This takes longer but can provide "better" and/or more control points.<br />
<br />
The feature description step can be fine-tuned by the parameters:<br />
<br />
--sieve1width <int> Sieve 1: Number of buckets on width (default: 10)<br />
<br />
--sieve1height <int> Sieve 1: Number of buckets on height (default: 10)<br />
<br />
--sieve1size <int> Sieve 1: Max points per bucket (default: 100)<br />
<br />
--kdtreesteps <int> KDTree: search steps (default: 200)<br />
<br />
--kdtreeseconddist <double> KDTree: distance of 2nd match (default: 0.25)<br />
<br />
'''Cpfind''' stores maximal sieve1width * sieve1height * sieve1size keypoints per image. If you have only a small overlap, e.g. for 360 degree panorama shoot with fisheye images, you can get better results if you increase sieve1size. You can also try to increase sieve1width and/or sieve1height.<br />
<br />
Effectively cpfind splits your image in rectangles: sieve1width horizontally by sieve1height vertically. It will try to find sieve1size interest points. This ensures a reasonably uniform distribution of interest points over your image. These features will be matched in the matching step. With the default parameters, up to 10000 interest points will be used in the feature matching step.<br />
<br />
== Feature matching ==<br />
<br />
Fine-tuning of the matching step by the following parameters:<br />
<br />
--ransaciter <int> Ransac: iterations (default: 1000)<br />
<br />
--ransacdist <int> Ransac: homography estimation distance threshold (pixels) (default: 25)<br />
<br />
--minmatches <int> Minimum matches (default: 4)<br />
<br />
--sieve2width <int> Sieve 2: Number of buckets on width (default: 5)<br />
<br />
--sieve2height <int> Sieve 2: Number of buckets on height (default: 5)<br />
<br />
--sieve2size <int> Sieve 2: Max points per bucket (default: 2)<br />
<br />
'''Cpfind''' generates between minmatches and sieve2width * sieve2height * sieve2size control points between an image pair. (Default setting is between 4 and 50 (=5*5*2) control points per image pair.) <br />
If less then minmatches control points are found for a given image pairs these control points are disregarded and this image pair is considered as not connected. For narrow overlaps you can try to decrease minmatches, but this increases the risk of getting wrong control points.<br />
<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Cpfind&diff=13022Cpfind2011-01-21T08:52:09Z<p>Pablo: /* Rectilinear and fisheye images */ Added not about bugs in 2010.4</p>
<hr />
<div>= General and description =<br />
'''Cpfind''' is a control point detector for [[hugin]]. It expects a project file as input and write a project file with control points on success. The general usage is<br />
cpfind -o output.pto input.pto<br />
Internal the control point detector algorithm is divided into 2 parts: <br />
* The first step is the feature description: In this step the images of the project file are loaded and so called keypoints are searched. They describe destinctive features in the image. Cpfind is using a gradient based descriptor for the feature description of the keypoints. <br />
* In a second step, the feature matching, all keypoints of two images are matched against each other to find features which are on both images. If this matching was successfull two keypoints in the two images become one control point.<br />
<br />
= Usage =<br />
== Rectilinear and fisheye images ==<br />
Cpfind can find control points in rectilinear and fisheye images. To achieve good control points images with a high horizontal field of view (e.g. ultra wide rectilinear or fisheye) are therefor remapped into a conformal space (cpfind is using the [[Projection#Stereographic_projection|stereographic projection]]) and the feature matching occurs in this space. Before writing the control points the coordinates are remapped back to the image space. This happens automatic depending on the information about the lens in the input project file. So check that your input project file contains reasonable information about the used lens.<br />
<br />
'''WARNING:''' cpfind in hugin 2010.4 has some bugs and won't work properly with fisheye images. Use a 2010.5 development snapshot (rev c137328f1418, from 2011-01-20) or wait for the next release.<br />
<br />
== Using celeste ==<br />
Outdoor panorama often contains clouds. Clouds are bad areas for setting control points because they are moving object. Cpfind can use the same algorithm as [[celeste_standalone]] to masked out areas which contains clouds. (This is only done internal for the keypoint finding step and does not change the alpha channel of your image. If you want to generate a mask image use [[celeste_standalone]]). To run cpfind with celeste use<br />
cpfind --celeste -o output.pto input.pto<br />
Using '''cpfind''' with integrated celeste should be superior against using '''cpfind''' and [[celeste_standalone]] sequential. When running '''cpfind with celeste''' areas of clouds, which often contains keypoints with a high quality measure, are disregarded and areas without clouds are used instead. When running '''cpfind without celeste''' also keypoints on clouds are found. When afterwards running [[celeste_standalone]] these control points are removed. In the worst case all control points of a certain image pair are removed.<br />
<br />
So running '''cpfind with celeste''' leads to a better "control point quality" for outdoor panorama (e.g. panorama with clouds). Running '''cpfind with celeste''' takes longer than '''cpfind''' alone. So for indoor panorama this option does not need to specified (because of longer computation time).<br />
<br />
The celeste step can be fine tuned by the parameters --celesteRadius and --celesteThreshold.<br />
<br />
== Matching strategy ==<br />
=== All pairs ===<br />
This is the default matching strategy. Here all image pairs are matched against each other. E.g. if your project contains 5 images then '''cpfind''' matches the image pairs: 0-1, 0-2, 0-3, 0-4, 1-2, 1-3, 1-4, 2-3, 2-4 and 3-4<br />
<br />
This strategy works for all shooting strategy (single-row, multi-row, unordered). It finds (nearly) all connected image pairs. But it is computational expensive for projects with many images, because it test many image pairs which are not connected.<br />
<br />
=== Linear match ===<br />
<br />
This matching strategy works best for single row panoramas:<br />
cpfind --linearmatch -o output.pto input.pto<br />
This will only detect matches between adjacent images, e.g. for the 5 image example it will matches images pairs 0-1, 1-2, 2-3 and 3-4. The matching distance can be increased with the switch --linearmatchlen. E.g. with --linearmatchlen 2 '''cpfind''' will match a image with the next image and the image after next, in our example it would be 0-1, 0-2, 1-2, 1-3, 2-3, 2-4 and 3-4.<br />
<br />
=== Multirow matching===<br />
<br />
This is an optimized matching strategy for single and multi-row panorama:<br />
cpfind --multirow -o output.pto input.pto<br />
The algorithm is the same as described in [[Hugin_Parameters_for_Control_Point_Detectors_dialog#Multi-row_panorama|multi-row panorama]]. By integrating this algorithm into '''cpfind''' it is faster by using several cores of modern CPUs and don't caching the keypoints to disc (which is time consuming). If you want to use this multi-row matching inside [[hugin]] set the control point detector type to [[Hugin_Parameters_for_Control_Point_Detectors_dialog#All_images_at_once|All images at once]].<br />
<br />
=== Keypoints caching to disc ===<br />
<br />
The calculation of keypoints takes some time. So '''cpfind''' offers the possibility to save the keypoints to a file and reuse them later again. With --kall the keypoints for all images in the project are saved to disc. If you only want the keypoints of particular image use the parameter -k with the image number:<br />
cpfind --kall input.pto<br />
cpfind -k 0 -k 1 input.pto<br />
The keypoint files are saved by default into the same directory as the images with the extension .key. In this case no matching of images occurs and therefore no output project file needs to specified. If '''cpfind''' finds keyfiles for an image in the project it will use them automatically and not run the feature descriptor again on this image.<br />
If you want to save them to annother directory use the --keypath switch. <br />
<br />
This procedure can also be automate with the switch --cache:<br />
cpfind --cache -o output.pto input.pto<br />
In this case it tries to load existing keypoint files. For images, which don't have a keypoint file, the keypoints are detected and saved to the file. Then it matches all loaded and newly found keypoints and writes the output project.<br />
<br />
If you don't need the keyfile longer, the can be deleted automatic by<br />
cpfind --clean input.pto<br />
<br />
= Extended options =<br />
== Feature description ==<br />
<br />
For speed reasons '''cpfind''' is using images, which are scaled to their half width and height, to find keypoints. With the switch --fullscale '''cpfind''' is working on the full scale images. This takes longer but can provide "better" and/or more control points.<br />
<br />
The feature description step can be fine-tuned by the parameters:<br />
<br />
--sieve1width <int> Sieve 1: Number of buckets on width (default: 10)<br />
<br />
--sieve1height <int> Sieve 1: Number of buckets on height (default: 10)<br />
<br />
--sieve1size <int> Sieve 1: Max points per bucket (default: 30)<br />
<br />
--kdtreesteps <int> KDTree: search steps (default: 40)<br />
<br />
--kdtreeseconddist <double> KDTree: distance of 2nd match (default: 0.15)<br />
<br />
'''Cpfind''' stores maximal sieve1width * sieve1height * sieve1size keypoints per image. If you have only a small overlap, e.g. for 360 degree panorama shoot with fisheye images, you can get better results if you increase sieve1size. You can also try to increase sieve1width and/or sieve1height.<br />
<br />
Effectively cpfind splits your image in rectangles: sieve1width horizontally by sieve1height vertically. It will try to find sieve1size control points in each area. This ensures a reasonably uniform distribution of keypoints over your image. Of course with the defaults, a very large number (up to 3000) of controlpoints could be generated (if two images overlap fully).<br />
<br />
== Feature matching ==<br />
<br />
Fine-tuning of the matching step by the following parameters:<br />
<br />
--ransaciter <int> Ransac: iterations (default: 1000)<br />
<br />
--ransacdist <int> Ransac: homography estimation distance threshold (pixels) (default: 25)<br />
<br />
--minmatches <int> Minimum matches (default: 4)<br />
<br />
--sieve2width <int> Sieve 2: Number of buckets on width (default: 5)<br />
<br />
--sieve2height <int> Sieve 2: Number of buckets on height (default: 5)<br />
<br />
--sieve2size <int> Sieve 2: Max points per bucket (default: 2)<br />
<br />
'''Cpfind''' generates between minmatches and sieve2width * sieve2height * sieve2size control points between an image pair. (Default setting is between 4 and 50 (=5*5*2) control points per image pair.) <br />
If less then minmatches control points are found for a given image pairs these control points are disregarded and this image pair is considered as not connected. For narrow overlaps you can try to decrease minmatches, but this increases the risk of getting wrong control points.<br />
<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Ubuntu&diff=12146Hugin Compiling Ubuntu2010-01-24T06:54:56Z<p>Pablo: </p>
<hr />
<div>These instructions are work in progress and updated when newer versions of Ubuntu are released or when Hugin introduces new dependencies. They have worked, at the time of release or soon thereafter, with the following Ubuntu/Kubuntu versions:<br />
* Ubuntu 9.10: on AMD64 computer<br />
* Ubuntu 9.04: on AMD64 computer<br />
* Ubuntu 8.10: on AMD64 computer<br />
* Ubuntu 8.04: on an Intel processor<br />
* Ubuntu 7.10: on AMD Athlon XP<br />
* Ubuntu 7.04: on AMD64 computer<br />
* Ubuntu 6.06: on AMD64 computer<br />
<br />
They are likely to work only for the latest one, but you can check this page's history at the time that the older Ubuntu version was the most recent one to find the specifics for that version.<br />
<br />
Apart from the odd change in package name, nothing should be substantially different (and if does not work, please leave a comment on the [http://groups.google.com/group/hugin-ptx hugin-ptx mailing list]). Don't worry if the same package appears twice in an apt-get install line - apt-get will update existing packages if there is a newer version, and ignore duplicates if the latest version is already installed. On the other hand, if apt-get says that it can't find a package, it might be the odd change in package name. You can find a replacement package by using apt-cache search with a substring of the package required, e.g.<br />
<pre>apt-cache search wxW<br />
</pre><br />
<br />
The goal is to build hugin and the whole set of helper applications required.<br />
<br />
== Building environment ==<br />
Since we are going to build hugin, libpano13 and enblend we need to download and install all the development packages. This is very easy with apt-get.<br />
In a terminal window (K menu -> System -> Konsole or Applications -> Accessories -> Terminal (in Kubuntu), Applications -> Accessories -> Terminal (in Ubuntu))<br />
<br />
<pre>sudo apt-get install build-essential autoconf automake1.9 libtool flex bison gdb<br />
</pre><br />
<br />
Unless you have an amd64 system prior to 7.10, add the following packages.<br />
<pre>sudo apt-get install libc6-dev libgcc1<br />
</pre><br />
<br />
For older amd64 environments, the packages have a slightly different name:<br />
<pre>sudo apt-get install libc6-dev-amd64 lib64gcc1<br />
</pre><br />
<br />
To get the bleeding edge we'll need access to the SVN and Mercurial repositories, and for this we need the correct tools:<br />
<br />
<pre><br />
sudo apt-get install subversion mercurial<br />
</pre><br />
<br />
Not necessary, but useful if you want to move to the next level and build packages for distribution (list is incomplete):<br />
<br />
<pre><br />
sudo apt-get install subversion-tools<br />
</pre><br />
<br />
== Building Enblend ==<br />
<br />
Get the dependencies. If you are working with large images (300 megapixels and up), you should have a libtiff-devel compiled with large file support and libstdc++6.<br />
<br />
<pre>sudo apt-get install pkg-config libtiff4-dev libboost-graph-dev libboost-thread-dev \<br />
liblcms1-dev libglew1.5-dev libplot-dev libglut3-dev libopenexr-dev libxi-dev libxmu-dev \<br />
help2man texi2html texinfo fig2ps tidy gnuplot libxml-xpath-perl<br />
</pre><br />
<br />
For Ubuntu systems prior to 8.10, you will also need<br />
<br />
<pre>sudo apt-get install libopenexr2ldbl<br />
</pre><br />
<br />
Once all dependencies are in place, get the code. The official repository has migrated from CVS to Mercurial:<br />
<br />
<pre><br />
hg clone http://enblend.hg.sourceforge.net:8000/hgroot/enblend/enblend enblend<br />
cd enblend<br />
</pre><br />
<br />
If you already have checked out enblend, to update the code to the latest version you need to run:<br />
<pre><br />
hg pull<br />
hg update<br />
</pre><br />
<br />
We are then ready to compile. The CXXFLAGS <tt>--param inline-unit-growth=60</tt> is a workaround for x86_64 systems, Feb 2009, and apparently no longer needed (set by default). If you have an SMP machine and you're building a recent version, <tt>--disable-image-cache</tt> and <tt>--enable-openmp</tt> will speed up enblend/enfuse massively but may cause segmentation faults; in that case you will be better off with <tt>--enable-image-cache</tt> and <tt>--disable-openmp.</tt> <tt>-march=native</tt> is also beneficial and -O2 is better than -O3.<br />
<br />
<pre><br />
make --makefile=Makefile.scm<br />
mkdir BUILD<br />
cd BUILD<br />
CXXFLAGS="--param inline-unit-growth=60 -march=native -O2" ../configure --disable-image-cache --enable-openmp<br />
make<br />
</pre><br />
<br />
The second make step can be very long and memory consuming. Make sure you have enough swap space, and go get a healthy snack while the computer is compiling.<br />
<br />
If you encounter problems at any of these stages, please report back to the hugin-ptx mailing list. Report what command in the sequence you were executing, what machine/operating system, the revision checked out from CVS, and all other relevant information.<br />
<br />
You are then ready to install with<br />
<pre><br />
sudo make install<br />
</pre><br />
<br />
== Building Libpano13 ==<br />
<br />
libpano13 is the new version of the PanoTools libraries. This is a necessary component for hugin, and we need to build it first.<br />
To build libpano13 we need some libraries and particularly their <code>dev</code> package:<br />
<br />
<pre>sudo apt-get install zlib1g zlib1g-dev libpng12-dev libjpeg62-dev libtiff4-dev</pre><br />
<br />
On older distributions, zlib1g and zlib1g-dev may not be found. In that case, the same library may be available with the names lib64z1 and lib64z1-dev.<br />
<br />
We then need to download the source code from SVN:<br />
<br />
<pre><br />
svn co https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano libpano13<br />
cd libpano13<br />
</pre><br />
<br />
In the future there is no need to get the whole source again. Just issue the following commands to bring your source up to date:<br />
<pre><br />
cd libpano13<br />
svn up<br />
</pre><br />
<br />
Now start the building process.<br />
<br />
<pre><br />
cd ..<br />
mkdir build.libpano<br />
cd build.libpano<br />
cmake ../libpano13 -DCMAKE_INSTALL_PREFIX=/usr/local -DCPACK_BINARY_DEB:BOOL=ON -DCPACK_BINARY_NSIS:BOOL=OFF \<br />
-DCPACK_BINARY_RPM:BOOL=OFF -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TBZ2:BOOL=OFF \<br />
-DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF<br />
make package<br />
sudo dpkg -i libpano13-*-Linux.deb<br />
</pre><br />
<br />
=== autotools ===<br />
<br />
The above described building process uses CMake to build libpano which has many advantages. Amongst others it creates a clean package to install / deinstall and decreases the likelihood of wrecking the system. However CMake support is relatively new in libpano. The old autotools way is documented below for completness. You should not need it. However if you do, make sure to run either the CMake build or the autotools build on fresh SVN checkouts to avoid interferences.<br />
<br />
<pre><br />
./bootstrap<br />
</pre><br />
<br />
If any libraries are missing, the script will complain (or at least, let you know that some library hasn't been found). In that case you probably need to install the library. To find in what package is that library, a general rule is to run the command <code>apt-cache search ''missingfile''</code>, find the relevant library and install both the library and the related <code>-dev</code> package.<br />
Run the <code>./configure</code> script and repeat this process until you have met all the dependencies.<br />
<br />
Then we are ready to launch the make process with<br />
<pre>make</pre><br />
<br />
If the library successfully compiles, you have to install it with<br />
<pre>sudo make install<br />
sudo ldconfig</pre><br />
The last part is for the OS to be aware of the new library (that has been installed in <code>/usr/local/lib</code>).<br />
We can now go back up one folder level and get ready for hugin.<br />
<pre>cd ..</pre><br />
<br />
== Building Hugin ==<br />
<br />
=== Dependencies ===<br />
<br />
First we need to activate the <code>universe</code> repository (in adept package manager, or by editing the /etc/apt/sources.lst file for example) and get the dependencies:<br />
<br />
<pre><br />
sudo apt-get install cmake libopenexr-dev libboost-dev boost-build libboost-thread-dev libboost-graph-dev \<br />
gettext libwxgtk2.8-dev libexiv2-dev libimage-exiftool-perl libglew-dev liblapack-dev<br />
</pre><br />
<br />
=== Fetch the Source Code from SVN ===<br />
<br />
Next we download Hugin from SVN. But which Hugin? There are many [http://svnbook.red-bean.com/en/1.1/ch04.html#svn-ch-4-sect-1 branches] in SVN. Also SVN keeps track of every single change (revision) in time, so we can download a branch in its state at a specific point in time. For example <code>-r 4008 https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk/</code> will download the trunk branch at the point in time when revision [http://hugin.svn.sourceforge.net/viewvc/hugin?view=rev&revision=4008 4008] was committed, which happens to be Tue Jul 7 22:07:54 2009 UTC. It also happens to be the same as the 0.8.0 release. For a list of branches and revisions that build well, refer to these [[Development_of_Open_Source_tools#Specific_revisions|lists]]. There is no guarantee that a particular branch and/or revision builds and/or performs as expected.<br />
<br />
<pre><br />
svn co -r 4061 https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/tags/hugin-2009.07.1/ hugin<br />
</pre><br />
<br />
If you know what you are doing, you can replace /hugin-2009.07.1/ with another branch; and you can omit the -r and get the last revision of that branch.<br />
<br />
In the future there is no need to get the whole source again. Just issue the following commands to bring your source up to date:<br />
<pre><br />
cd hugin<br />
svn up<br />
</pre><br />
<br />
=== Set the Build Environment ===<br />
<br />
Next we set up the build environment using cmake.<br />
<br />
If you compiled and installed libpano to a non standard location set the variables CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH to point to your install location's include and lib directories.<br />
<br />
If you are building for distribution, you want to set CMAKE_INSTALL_PREFIX=/usr<br />
<br />
<pre><br />
mkdir hugin-build<br />
cd hugin-build<br />
cmake ../hugin -DENABLE_LAPACK=YES -DCPACK_BINARY_DEB:BOOL=ON -DCPACK_BINARY_NSIS:BOOL=OFF \<br />
-DCPACK_BINARY_RPM:BOOL=OFF -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TBZ2:BOOL=OFF \<br />
-DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF<br />
</pre><br />
<br />
=== Build and Install ===<br />
<br />
Finally, we use make to build the code and package it, and dpkg to install it. Look for the version number in the .deb file created and edit the lines below accordingly: <br />
<br />
<pre><br />
make package<br />
sudo dpkg -i hugin-*-Linux.deb<br />
sudo ldconfig<br />
</pre><br />
<br />
'''Important:''' the package does not track dependencies yet, so it likely to fail on machines others than yours.<br />
<br />
Reference: [http://theseblog.free.fr/2007/10/building-hugin-in-ubuntu-feisty-fawn.php]<br />
<br />
== Autopano-sift-C ==<br />
<br />
Pre-Requisites:<br />
<pre><br />
sudo apt-get install libxml2-dev<br />
</pre><br />
<br />
To build<br />
<br />
(Note January 2010: Currently the autopano-sift-C SVN trunk is unstable, use the 2.5.1 release tarball instead)<br />
<br />
<pre><br />
svn co https://hugin.svn.sourceforge.net/svnroot/hugin/autopano-sift-C/trunk/ autopano-sift-C<br />
mkdir autopano-sift-C.build<br />
cd autopano-sift-C.build<br />
cmake ../autopano-sift-C -DCMAKE_INSTALL_PREFIX=/usr/local -DCPACK_BINARY_DEB:BOOL=ON -DCPACK_BINARY_NSIS:BOOL=OFF \<br />
-DCPACK_BINARY_RPM:BOOL=OFF -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TBZ2:BOOL=OFF \<br />
-DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF<br />
make package<br />
sudo dpkg -i autopano-sift-C-*-Linux.deb<br />
</pre><br />
<br />
== Match-n-shift ==<br />
<br />
Match-n-shift is yet an other Autopano-SIFT replacement. It comes in a bundle with pto file manipulation perl libraries and a rich selection of other tools that use nona, enblend, ImageMagick among other things. To use match-n-shift, you need to install at least the [http://search.cpan.org/dist/Panotools-Script/ Panotools::Script] library and some other perl modules. It requires:<br />
<br />
* Image::Size 2.9<br />
* Storable 2.0<br />
* Image::ExifTool 6<br />
<br />
Chances are that you do not need to update Storable which is a standard perl module. To check the version of installed versions of these modules, write these lines to the command prompt:<br />
<br />
perl -MStorable -le 'print Storable->VERSION;'<br />
perl -MImage::Size -le 'print Image::Size->VERSION;'<br />
perl -MImage::ExifTool -le 'print Image::ExifTool->VERSION;'<br />
<br />
There are various ways to install or upgrade these modules. Ubuntu has binary packages for many perl modules, you can skip the CPAN installation below and type:<br />
<br />
sudo apt-get install libimage-size-perl libimage-exiftool-perl<br />
<br />
Alternatively, perl is an interpreted language and these modules are pure perl, so installing from source is an easy thing.<br />
<br />
The best place to install perl modules is directly from a CPAN archive. CPAN is short for Comprehensive Perl Archive Network. The program to interact with CPAN comes with all perl installations. Start it by running:<br />
<br />
sudo cpan<br />
<br />
If this is your first time running the program you will be asked a number of questions (you can safely accept the suggested values). Last question lets you select a number of CPAN mirrors nearest to you.<br />
<br />
When all is done, you can enter the install commands after the 'cpan>' prompt:<br />
<br />
install Image::Size Storable Image::ExifTool<br />
<br />
Answer 'y' to any question of dependencies and wait for install to complete. 'exit' leaves the cpan shell.<br />
<br />
Next, you need to retrieve and install the Panotools-Script collection<br />
of perl libraries (Panotools::Script) and programs that use them -<br />
including match-n-shift:<br />
<br />
svn co https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/Panotools-Script Panotools-Script<br />
cd Panotools-Script<br />
perl Makefile.PL<br />
make<br />
make test<br />
sudo make install<br />
<br />
Just to confuse you, you can also ignore everything above and just install Panotools::Script and all its dependencies from CPAN. From command line, type:<br />
<br />
sudo cpan Panotools::Script<br />
<br />
You can run match-n-shift from command line using the same parameters as autopano-c-complete.sh or you can modify hugin to run it for you:<br />
<br />
* start Hugin<br />
* navigate the menu File to Preferences<br />
* In the Preferences window, open the Autopano tab<br />
* Select Autopano -> Autopano-SIFT<br />
* tick the checkbox for Use alternative Autopano-SIFT program<br />
* enter the full path to match-n-shift (/usr/local/bin/match-n-shift) in the Autopano-SIFT field<br />
* enter the following string in the Arguments field:<br />
-f %f -v %v -c -p %p -o %o %i<br />
<br />
== MatchPoint ==<br />
<br />
MatchPoint is a next generation CP generator. The result of a GSoC2007 project, it is still very experimental. Experience reports needed. Read more [http://groups.google.com/group/hugin-ptx/browse_thread/thread/cba2b2ce94dd9054 here]<br />
<br />
Matchpoint is now located inside the main hugin source tree, no need to checkout https://hugin.svn.sourceforge.net/svnroot/hugin/gsoc07_featuredetection anymore. It is compiled together with hugin, but not installed by default.<br />
<br />
* copy the MatchPoint executable into /usr/local/bin manually<br />
<pre><br />
sudo cp src/matchpoint/matchpoint /usr/local/bin/<br />
</pre><br />
* edit /usr/local/bin/autopano-c-complete.sh (do it with sudo to have the necessary permission)<br />
** line 79: replace the .key.gz extension with .key (not sure if matchpoint supports compression)<br />
** lines 83 and 88: replace '''generatekeys "$arg" $FILENAME $SIZE''' with '''matchpoint "$arg" $FILENAME''' (not sure if the size option or any other options of the original generatekeys are applicable)<br />
<br />
== Pan-o-matic ==<br />
<br />
Yet another control point generator [http://aorlinsk2.free.fr/panomatic/?p=home Home Page]<br />
<br />
<pre>sudo apt-get install libboost-dev</pre><br />
<br />
Download [http://aorlinsk2.free.fr/panomatic/download.php?d=7&v=0.9.4 Panomatic 0.9.4 bz2] and if you're on Ubuntu 9.10 or newer also the [http://aorlinsk2.free.fr/panomatic/panomatic_gcc44.patch patch] for the gcc4.4 compiler.<br />
<br />
<pre><br />
tar xvfj panomatic-0.9.4-src.tar.bz2<br />
cd panomatic-0.9.4<br />
patch -p 1 < ../panomatic_gcc44.patch<br />
./configure<br />
make<br />
sudo make install<br />
</pre><br />
<br />
To use Pano-o-matic, open Hugin<br />
<br />
* In File > Preferences > Autopano :<br />
* Select Autopano-SIFT<br />
* Check "Use alternative autopaon-SIFT program"<br />
* Choose the path to the binary ( /usr/local/bin )<br />
* In Arguments, put : -o %o %i<br />
<br />
=== Pablo's variation ===<br />
<br />
Around the end of the year 2009, Pablo integrated a [http://groups.google.com/group/hugin-ptx/browse_thread/thread/d9c0558c679cad52 new] experimental descriptor based on the geometric blur and DAISY papers. To build that version of panomatic instead, follow these instructions:<br />
<br />
<pre><br />
sudo aptitude install libboost-python-dev bzr cmake libvigraimpex-dev<br />
</pre><br />
<br />
<pre><br />
bzr branch lp:~pablo.dangelo/hugin/panomatic-lib<br />
mkdir build<br />
cd build<br />
cmake ../panomatic-lib<br />
make<br />
make install<br />
</pre><br />
<br />
To use the new descriptor the arguments for Hugin are: '''--grad --sieve1size 100 --sieve2size 2 -o %o %i'''<br />
<br />
== Exiftool ==<br />
<br />
ExifTool is a platform-independent Perl library plus a command-line application for reading, writing and editing meta information in image, audio and video files.<br />
<br />
<pre><br />
sudo apt-get purge libimage-exiftool-perl<br />
</pre><br />
<br />
<pre><br />
wget http://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-7.94.tar.gz<br />
tar -xzf Image-ExifTool-7.94.tar.gz<br />
cd Image-ExifTool-7.94<br />
perl Makefile.PL<br />
make test<br />
sudo make install<br />
</pre><br />
<br />
== Panoglview ==<br />
<br />
PanoGLView is an OpenGL hardware accelerated interactive immersive viewer for equirectangular images.<br />
<br />
Pre-Requisites:<br />
<pre>sudo apt-get install wx-common</pre><br />
<br />
To build<br />
<pre><br />
svn co https://hugin.svn.sourceforge.net/svnroot/hugin/panoglview/trunk panoglview<br />
cd panoglview<br />
./bootstrap<br />
./configure<br />
make<br />
sudo make install<br />
</pre><br />
<br />
== FreePV ==<br />
<br />
Pre-Requisites:<br />
<pre><br />
sudo apt-get install cmake make pkg-config g++ mozilla-dev freeglut-dev zlib1g-dev libjpeg-dev libxext-dev libxmu-dev \<br />
x11proto-xf86vidmode-dev libxxf86vm-dev libnspr4-dev libxml2-dev libpng12-dev<br />
</pre><br />
To build<br />
<pre><br />
svn co https://freepv.svn.sourceforge.net/svnroot/freepv/freepv/trunk/ freepv<br />
cd freepv<br />
cmake .<br />
make<br />
sudo make install<br />
</pre><br />
<br />
== Notes for Packagers ==<br />
* before releasing a tarball, upgrade the Changelog with svn2cl<br />
<pre><br />
$ svn up<br />
$ svn2cl<br />
$ svn ci<br />
</pre><br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Linux]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Ubuntu&diff=10152Hugin Compiling Ubuntu2008-03-30T23:11:44Z<p>Pablo: updated matchpoint build instructions + matchpoint is all written in lower case now.</p>
<hr />
<div>These instructions are work in progress. Initially tested on a blank installation of Kubuntu 6.06 (Edgy Eft) on a AMD64 computer, they have also been tested on Ubuntu 7.04 on a AMD64 computer and Ubuntu 7.10 on an AMD Athlon XP computer. Apart from the odd change in package name, nothing should be substantially different (and if does not work, please leave a comment on the [http://groups.google.com/group/hugin-ptx hugin-ptx mailing list]). Don't worry if the same package appears twice in an apt-get install line - apt-get will update existing packages if there is a newer version, and ignore duplicates if the latest version is already installed. On the other hand, if apt-get says that it can't find a package, it might be the odd change in package name. You can find a replacement package by using apt-cache search with a substring of the package required, e.g.<br />
<pre>apt-cache search wxW<br />
</pre><br />
<br />
The goal is to build hugin and the whole set of helper applications required.<br />
<br />
== Building environment ==<br />
Since we are going to build hugin, libpano13 and enblend we need to download and install all the development packages. This is very easy with apt-get.<br />
In a terminal window (K menu -> System -> Konsole or Applications -> Accessories -> Terminal)<br />
<br />
<pre>sudo apt-get install build-essential autoconf automake1.9 libtool flex bison gdb <br />
</pre><br />
<br />
Unless you have an amd64 system prior to 7.10, add the following packages.<br />
<pre>sudo apt-get install libc6-dev libgcc1<br />
</pre><br />
<br />
<br />
For older amd64 environments, these are the packages have a slightly different name.<br />
<pre>sudo apt-get install libc6-dev-amd64 lib64gcc1<br />
</pre><br />
<br />
<br />
To get the bleeding edge we'll need access to the SVN and CVS repositories, and for this we need the correct tools:<br />
<pre> sudo apt-get install subversion cvs<br />
</pre><br />
<br />
== Building Enblend ==<br />
<br />
Get the dependencies. If you are working with large images (300 megapixels and up), you should have a libtiff-devel compiled with large file support and libstdc++6.<br />
<br />
<pre>sudo apt-get install pkg-config libtiff4-dev libboost-graph-dev libboost-thread-dev \<br />
liblcms1-dev libglew-dev libplot-dev libglut3-dev libopenexr-dev libopenexr2c2a libxi-dev<br />
</pre><br />
<br />
Once all dependencies are in place, we get the code from CVS (simply press ENTER when prompted for a password on the login command) and build it.<br />
<br />
<pre>cvs -d:pserver:anonymous@enblend.cvs.sourceforge.net:/cvsroot/enblend login<br />
cvs -z3 -d:pserver:anonymous@enblend.cvs.sourceforge.net:/cvsroot/enblend co -P enblend<br />
cd enblend</pre><br />
We are then ready to compile.<br />
<pre>make -f Makefile.cvs<br />
./configure<br />
make<br />
</pre><br />
<br />
The second make step can be very long and memory consuming. Make sure you have enough swap space, and go get a healthy snack while the computer is compiling.<br />
<br />
If you encounter problems at any of these stages, please report back to the hugin-ptx mailing list. Report what command in the sequence you were executing, what machine/operating system, the revision checked out from CVS, and all other relevant information.<br />
<br />
You are then ready to install with<br />
<pre>sudo make install</pre><br />
<br />
== Building libpano13 ==<br />
libpano13 is the new version of the PanoTools libraries. This is a necessary component for hugin, and we need to build it first.<br />
To build libpano13 we need some libraries and particularly their <code>dev</code> package:<br />
<pre>sudo apt-get install zlib1g zliblg-dev libpng12-dev libjpeg62-dev libtiff4-dev</pre><br />
<br />
On older distributions, zlib1g and zlib1g-dev may not be found. In that case, the same library may be available with the names lib64z1 and lib64z1-dev.<br />
<br />
We then need to download the source code from SVN:<br />
<pre>svn co https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano libpano13<br />
cd libpano13<br />
./bootstrap</pre><br />
<br />
If any libraries are missing, the script will complain (or at least, let you know that some library hasn't been found). In that case you probably need to install the library. To find in what package is that library, a general rule is to run the command <code>apt-cache search ''missingfile''</code>, find the relevant library and install both the library and the related <code>-dev</code> package.<br />
Run the <code>./configure</code> script and repeat this process until you have met all the dependencies.<br />
Then we are ready to launch the make process with<br />
<pre>make</pre><br />
<br />
If the library successfully compiles, you have to install it with<br />
<pre>sudo make install<br />
sudo ldconfig</pre><br />
The last part is for the OS to be aware of the new library (that has been installed in <code>/usr/local/lib</code>).<br />
We can now go back up one folder level and get ready for hugin.<br />
<pre>cd ..</pre><br />
<br />
== Building hugin ==<br />
<br />
Some additional libraries are needed. We need first to activate the <code>universe</code> repository (in adept package manager, or by editing the /etc/apt/sources.lst file for example).<br />
<pre>sudo apt-get install cmake libopenexr-dev libboost-dev boost-build libboost-thread-dev libboost-graph-dev \<br />
gettext libwxgtk2.8-dev libexiv2-dev libimage-exiftool-perl libvigraimpex-dev<br />
</pre><br />
<br />
We download the source from SVN, as before<br />
<pre>svn co https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk/ hugin<br />
cd hugin</pre><br />
<br />
'''Important:''' at the time of writing hugin is under development. The SVN trunk is likely to change often and can sometimes have critical bugs. Try the above first. If it does not work, please report back to the hugin-ptx mailing list. If you need a recent working version of hugin, find out from the mailing list what is the latest working revision number and plug it in after the -r switch in<br />
<pre>svn co -r 2906 https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk/ hugin<br />
cd hugin</pre><br />
<br />
hugin has to be built using cmake (which we installed before).<br />
<pre>cmake -DCMAKE_INSTALL_PREFIX=/usr/local .</pre><br />
<br />
If you compiled and installed libpano to a non standard location set the variables CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH to point to your install location's include and lib directories.<br />
<br />
Finally, launch the compilation and installation with<br />
<pre>make<br />
sudo make install<br />
sudo ldconfig</pre><br />
<br />
Reference: [http://theseblog.free.fr/2007/10/building-hugin-in-ubuntu-feisty-fawn.php]<br />
<br />
== Autopano-sift-C ==<br />
<br />
<pre><br />
sudo apt-get install libxml2-dev<br />
svn co https://hugin.svn.sourceforge.net/svnroot/hugin/autopano-sift-C/trunk/ autopano-sift-C<br />
cd autopano-sift-C<br />
cmake -DCMAKE_INSTALL_PREFIX=/usr/local .<br />
make<br />
sudo make install</pre><br />
<br />
== Match-n-shift ==<br />
<br />
Match-n-shift is yet an other Autopano-SIFT replacement. It comes in a bundle with pto file manipulation perl libraries and a rich selection of other tools that use nona, enblend, ImageMagick among other things. To use match-n-shift, you need to install at least the [http://search.cpan.org/dist/Panotools-Script/ Panotools::Script] library and some other perl modules. It requires:<br />
<br />
* Math::Matrix 0.4<br />
* Image::Size 2.9<br />
* Storable 2.0<br />
<br />
Chances are that you do not need to update Storable which is a standard perl module. To check the version of installed versions of these modules, write these lines to the command prompt:<br />
<br />
perl -MStorable -le 'print Storable->VERSION;'<br />
perl -MMath::Matrix -le 'print Math::Matrix->VERSION;'<br />
perl -MImage::Size -le 'print Image::Size->VERSION;'<br />
<br />
There are various ways to install or upgrade these modules. Ubuntu has binary packages for many perl modules but unfortunately not for Math::Matrix. Perl is<br />
interpreted language and these modules are pure perl, so installing<br />
from source is an easy thing.<br />
<br />
The best place to install perl modules is directly from a CPAN archive. CPAN is short for Comprehensive Perl Archive Network. The program to interact with CPAN comes with all perl installations. Start it by running:<br />
<br />
sudo cpan<br />
<br />
If this is your first time running the program you will be asked a number of questions (you can safely accept the suggested values). Last question lets you select a number of CPAN mirrors nearest to you.<br />
<br />
When all is done, you can enter the install commands after the 'cpan>' prompt:<br />
<br />
install Math::Matrix Image::Size Storable<br />
<br />
Answer 'y' to any question of dependencies and wait for install to complete. 'exit' leaves the cpan shell.<br />
<br />
If you rather use Ubuntu packages to install as much as you can, you can skip the Image::Size installation above and type:<br />
<br />
sudo apt-get install libimage-size-perl<br />
<br />
Lastly, you can download Math::Matrix tar ball from CPAN: http://search.cpan.org/~ulpfr/Math-Matrix-0.5/ and follow the installation instructions in the tar ball file.<br />
<br />
Next, you need to retrive and install the Panotools-Script collection<br />
of perl libraries (Panotools::Script) and programs that use them -<br />
including match-n-shift:<br />
<br />
svn co https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/Panotools-Script Panotools-Script<br />
cd Panotools-Script<br />
perl Makefile.PL<br />
make<br />
make test<br />
sudo make install<br />
<br />
Just to confuse you, you can also ignore everything above and just install Panotools::Script and all its dependencies from CPAN. From command line, type:<br />
<br />
sudo cpan Panotools::Script<br />
<br />
You can run match-n-shift from command line using the same parameters as autopano-c-complete.sh or you can modify hugin to run it for you:<br />
<br />
* start Hugin<br />
* navigate the menu File to Preferences<br />
* In the Preferences window, open the Autopano tab<br />
* Select Autopano -> Autopano-SIFT<br />
* tick the checkbox for Use alternative Autopano-SIFT program<br />
* enter the full path to match-n-shift (/usr/local/bin/match-n-shift) in the Autopano-SIFT field<br />
* enter the following string in the Arguments field:<br />
-f %f -v %v -c -p %p -o %o %i<br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Linux]]<br />
<br />
== MatchPoint ==<br />
<br />
MatchPoint is a next generation CP generator. The result of a GSoC2007 project, it is still very experimental. Experience reports needed. Read more [http://groups.google.com/group/hugin-ptx/browse_thread/thread/cba2b2ce94dd9054 here]<br />
<br />
Matchpoint is now located inside the main hugin source tree, no need to checkout https://hugin.svn.sourceforge.net/svnroot/hugin/gsoc07_featuredetection anymore. It is compiled together with hugin, but not installed by default.<br />
<br />
* copy the MatchPoint executable into /usr/local/bin manually<br />
*:<pre><br />
*: sudo cp src/matchpoint/matchpoint /usr/local/bin/<br />
*:</pre><br />
* edit /usr/local/bin/autopano-c-complete.sh (do it with sudo to have the necessary permission)<br />
** line 79: replace the .key.gz extension with .key (not sure if matchpoint supports compression)<br />
** lines 83 and 88: replace '''generatekeys "$arg" $FILENAME $SIZE''' with '''matchpoint "$arg" $FILENAME''' (not sure if the size option or any other options of the original generatekeys are applicable)<br />
<br />
== Exiftool ==<br />
<br />
To get the bleeding edge<br />
<br />
<pre><br />
$ sudo apt-get remove libimage-exiftool-perl<br />
$ wget http://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-7.21.tar.gz (replace the version with the latest from the homepage)<br />
$ tar -xzf Image-ExifTool-#.##.tar.gz<br />
$ cd Image-ExifTool-#.##<br />
$ perl Makefile.PL<br />
$ make test<br />
$ sudo make install<br />
</pre></div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC_2008_ideas&diff=10130Historical:SoC 2008 ideas2008-03-19T07:47:18Z<p>Pablo: /* munin — interactive openGL based GUI */</p>
<hr />
<div>= Introduction =<br />
<br />
If you are a student willing to participate in The Google Summer of Code 2008, do as suggested below:<br />
<br />
* find out what ideas we have for SoC projects this year (read below);<br />
* make up your mind, if you want to pick one of those tasks or if you have your own idea;<br />
* join our community at [http://groups.google.com/group/hugin-ptx/ hugin-ptx];<br />
* introduce yourself and tell us about your plans and wishes.<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]). We also very much welcome contributions to [[Enblend]]/[[Enfuse]].<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
Some of the [[SoC2007 projects]] proposals were not done last year and are potential projects for this year.<br />
<br />
== munin — interactive openGL based GUI ==<br />
<br />
(Note that [http://munin.projects.linpro.no/ munin] is a popular open source graphing tool for network administrators, so this name isn't really usable)<br />
<br />
'''Possible Mentors''':<br />
<br />
* Pablo<br />
<br />
'''Description''':<br />
<br />
Intuitive and interactive GUI, with priority in usability over available features and flexibility, based on what users should see — not on what software does internally. To there are two roads for this:<br />
<br />
1. Create bindings to the core hugin library to a high level scripting language such as python, ruby or maybe lua. Use these to write the GUI.<br />
2. Use the core libary directly and write the GUI in C++. While this might be easier from the start, a GUI written in a scripting<br />
language has major benefits for the long term (rapid development, extensibility etc.).<br />
<br />
It would be nice to have a preview/renderer in OpenGL, but I fear that a new GUI and OpenGL acceleration is too big for a single GSOC project. If you are an experienced developer (know and have used all the required technology on non-trivial projects) it might be possible though.<br />
<br />
'''Skills''':<br />
<br />
* C++<br />
* Scripting language (python, ruby, lua?)<br />
* Qt4<br />
* OpenGL<br />
<br />
'''Discussion''':<br />
<br />
how about relaxing the skills, and instead of fixing on Qt4 work on a combination of high level scripting language and widgets? Phythons + wxWidgets or Lua + wxWidgets come to my mind. Right now we have the option as both wxWidgets and Qt are in trunk, and if the student codes those widgets that require speed in OpenGL so that they integrate into such an API, any scripter can then leverage them for the fast and efficient design of GUI. [[User:Yuval|Yuval]] 12:50, 4 March 2008 (CET)<br />
<br />
I think the GUI + OpenGL is a bit too much for a single project. A separate project for OpenGL acceleration would make more sense, I fear. I'd really like to see a scripting language interface to the hugin core library.<br />
<small>--[[User:Pablo|pablo]] 08:47, 19 March 2008 (CET)</small><br />
<br />
== enblend-enfuse zenith/nadir and more ==<br />
<br />
'''Primary Mentor'''<br />
<br />
Andrew Mihal<br />
<br />
'''Description'''<br />
<br />
* implementing blending of the zenith and nadir in Enblend and Enfuse<br />
*:The best way I can think of to do this is to use a cubic projection and provide all cube faces to the tool simultaneously. All of the boundaries will be horizontal or vertical lines, which will fit in well with the SKIPSM-based pyramid algorithms currently in use. Enblend and Enfuse can share the same pyramid code.<br />
* Enblend would additionally need a nearest feature transform algorithm that works on the cube surface for mask generation. I am not aware of a published algorithm to solve this.<br />
* Improve the seam optimization algorithm in Enblend.<br />
* GUI hooks: an API to a higher anstraction level language such as Python+wxWidgets or Lua+wxWidgets, with a real time interface into the enfuse functionality so that when changing weights with a sliders a preview can be generated in near real time. <br />
* multi-step fusing and alternative, user controlled, weighting (sigma).<br />
<br />
'''Skills'''<br />
<br />
'''Admission Test'''<br />
<br />
A potential applicant for this project should first try to add boundary conditions to the localVarianceIf function in enfuse.h.<br />
<br />
== OpenGL accelerated hugin preview ==<br />
<br />
'''Primary mentor'''<br />
<br />
'''Discussion'''<br />
<br />
There is a nice proof of concept for this idea created as a [http://vision.eng.shu.ac.uk/mmvlwiki/index.php/Panorama_Viewer student project at Hallam University].<br />
<br />
'''Skills'''<br />
<br />
== Ghost removal for enfuse ==<br />
<br />
'''Primary mentor'''<br />
<br />
'''Discussion'''<br />
<br />
Thanks to [[SoC2007 project Anti Ghosting]], hugin has ghost removal when merging [[Bracketing|bracketed]] series to [[HDR]], but this isn't currently available for [[enfuse]].<br />
<br />
'''Skills'''<br />
<br />
== Masking in GUI ==<br />
<br />
'''Primary mentor'''<br />
<br />
'''Discussion'''<br />
<br />
Currently masking to remove unwanted objects from panoramas has to be added to alpha channels which is laborious, this could be integrated into the hugin GUI via a simple vector/polygon editor. It would need to be simpler to use than the [http://hugin.sourceforge.net/tutorials/enblend-svg/ equivalent process with Inkscape]<br />
<br />
'''Skills'''<br />
<br />
== Batch processing ==<br />
<br />
'''Primary mentor'''<br />
<br />
'''Discussion'''<br />
<br />
[[SoC2007 project Batch Processing]] was an unadopted project last year.<br />
<br />
Now that hugin has a Makefile based stitching process, it is much clearer what a batch stitcher would look like. This would need to support 'plug-in' Makefile add-ons for additional views, QTVR generation, uploading, sharpening etc... as well as a queue/spool manager.<br />
<br />
Some explanation of this existing 'Makefile process': Currently hugin stitches projects by writing out the instructions (remapping and blending with nona, enblend, enfuse, exiftool etc...) into a standard Makefile and then running 'make -f project.pto.mk all clean' - This happens all in one go when a user clicks 'save and stitch', but alternatively the user has a choice to run 'make' manually.<br />
<br />
So batch processing already exists for users familiar with the command-line, ie. we can run 'make -j 16' to run processes in parallel or use a tool such as [http://distmake.sourceforge.net/pmwiki/pmwiki.php distmake] to queue jobs over the network on multiple machines.<br />
<br />
A plugin system also already exists to a certain extent in that these Makefiles can be extended with other makefiles that add additional targets, one for creating QTVR output is described [http://thread.gmane.org/gmane.comp.misc.ptx/8754 here].<br />
<br />
A batch stitcher would need to enable some or all of this functionality for normal users who have an interest in photography rather than tinkering with script files.<br />
<br />
'''Skills'''<br />
<br />
== Lens Database ==<br />
<br />
'''Primary mentor'''<br />
<br />
'''Discussion'''<br />
<br />
Lens database of accumulated knowledge on distortion, CA, response curve.<br />
The lens database aim : using stitching to feed an huge camera / lens database for distortion correction, vignetting correction, ca, etc. Then, it will be possible to reuse this database to correct single picture too.<br />
<br />
There are two ways to generate such a database:<br />
<br />
# Collect high quality photographs centrally, manually calibrate them and assemble a database that matches parameters with image EXIF data - This is how the [[PTLens]] database was collected.<br />
# Use the fact that stitching software (eg hugin, but there are other tools using the same lens correction model) effectively calibrates lenses every time a project is stitched - This information could be collected, validated and averaged centrally to automate the creation of a lens database.<br />
<br />
This project would investigate the second technique.<br />
<br />
'''Skills'''<br />
<br />
== tCA Correction ==<br />
<br />
'''Primary Mentor'''<br />
<br />
'''Description'''<br />
<br />
An utility to determining the Transverse Chromatic Aberration (tCA) of an image so it can be corrected.<br />
<br />
CA is when the color channels in an image do not appear to line up well with each other. tCA is when colors are in focus but placed adjacent to each other. tCA can be corrected with Panorama Tool's Radial Shift. More info on [[Chromatic aberration]]<br />
<br />
Correcting tCA using PanoTools' Radial Shift, requires knowing the radial correction coefficients a, b and c for your lens. PTOptimizer can be used to calculate the coefficients if known amounts of shift for each channel is known from the center to the corners of the image.<br />
<br />
This utility will produce these coefficients to be used in the lens database.<br />
<br />
Assume image is 180 deg diagonal filed of view. Regardless if it is rectangular or fisheye of any field of view. Map image to the nadir of a sphere, taking into account any offset from center of image.<br />
<br />
The bottom of the remapped image is the center of the original. Moving up the remapped image is the same as moving away from the center of the original image.<br />
<br />
Now we no longer have to deal with radial shift but vertical shift. The image can be divided into a number of strips going across the entire width of the image. Each strip represents a circle a different distance from the center. The strips are shifted up and down the same amount over the entire image width. Each strip can have the channel data adjusted up and down to find the best match to eliminate CAt at that position. One channel does not move while the other two are adjusted. The best result of the two channels are recored for every strip. Sub pixel accuracy can be achieved by increasing the height of the result when creating the remapped image.<br />
<br />
This can be done manually in real-time giving visual feedback of the channels alignment. Or it can be done programmability doing a difference between the two channels and looking at the histogram. The blackest result has the best alignment. If accurate automated results are possible then there is no need for the manual method.<br />
<br />
Current methods of correcting [http://hugin.sourceforge.net/tutorials/tca/en.shtml tCA] are fairly complicated. Though it can be [http://thread.gmane.org/gmane.comp.misc.ptx/8183/focus=8236 completely automated] using a patched version of [[align_image_stack]] from the [[hugin]] project, this technique works very well but could use some optimisation work to make it faster (and the align_image_stack patch needs integrating).<br />
<br />
Also according to [http://lists.freedesktop.org/archives/create/2008-February/001093.html this post] by the author of ufraw, the tCA correction in the latest [[dcraw]] is done before bayer interpolation (note that my interpretation of this code was the opposite , so what do I know - [[User:Bruno|Bruno]]). This tool should also create parameters for use by dcraw.<br />
<br />
== Extend hugin's output options for stitching ==<br />
<br />
'''Primary Mentor'''<br />
<br />
Zoran Mesec<br />
<br />
'''Description'''<br />
<br />
Currently hugin offers jpg, png, tiff and layered tiff output. Suggested are other formats like layered psd; swf , java and html generation for web publishing. Despite of all software projects efforts, stitched panoramas have some errors (like ghost objects) that can be easily removed in Photoshop or Gimp with layered output. A lot of open source graphical software already offers proposed file formats, but despite it is not an easy task that can be implemented in a week and therefore it is suitable to be a standalone SoC project<br />
<br />
Note that this is potentially complimentary and orthogonal to the ''batch stitching'' project described above, Makefiles are a good way to provide additional output types and quite suitable for HTML generation or even uploading.<br />
<br />
hugin and other tools generate [[Cropped TIFF]] files, with each 'layer' as a separate file. The workflow described above for using this data in image editors really requires file formats that contain all layers in a single file such as ''multilayer TIFF'' or [[PSD]]. Command-line tools for assembling these files are currently either too buggy to use or non-existent and fixing this situation would be a good project in itself.<br />
<br />
'''Skills'''<br />
<br />
== Utility for creating a Philosphere ==<br />
<br />
'''Primary Mentor'''<br />
<br />
Zoran Mesec<br />
<br />
'''Description'''<br />
<br />
Goal: A utility integrated into hugin for creating images from panoramas, suitable for printing.<br />
<br />
Tasks:<br />
* Implementation of described process using modified PT scripts and them combining partial results to final image<br />
* Integration into hugin<br />
<br />
Discussion:<br />
There are several possible outputs that can be used to print a panorama. Examples: polyhedron, "orange slices", rhombicuboctahedron...<br />
<br />
Resources:<br />
* http://www.philohome.com/rhombicuboctahedron/rhombicuboctahedron.htm<br />
* [[PTStitcher]]<br />
* [http://www.flickr.com/photos/sbprzd/tags/foldable/ experiments with mathmap] by [[User:Seb Przd]] - Particularly note the 'conformal cube'.<br />
<br />
'''Skills'''<br />
<br />
Required knowledge or interest in:<br />
* panoramic imaging<br />
* C++ and scripting languages development skills.<br />
<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin&diff=9936Hugin2008-02-02T23:41:01Z<p>Pablo: Hugin 0.7.0 release schedule</p>
<hr />
<div>'''Hugin''' {{Glossary|is an opensource graphical user interface (GUI) for [[Panorama tools]]|1}}.<br />
<br />
Like other [[GUI front-ends]], '''hugin''' provides an easy-to-use unified point-and-click interface to a whole range of other command-line tools including:<br />
<br />
* [[autopano-sift]], [[autopano-sift-C]] or [[autopano]] for automatic creation of [[control points]].<br />
* [[nona]] or [[PTmender]] for remapping input images and rendering output images.<br />
* [[enblend]] for seamless blending of output images.<br />
<br />
The Hugin project's mission is not only to provide a powerful GUI, but also to provide opensource replacements for the small number of closed source components of [[Panorama tools]], especially [[PTStitcher]].<br />
A [[PTStitcher]] replacement, called [[nona]] has been developed, supporting its most important features.<br />
<br />
Among the many flexible Hugin workflow options, it is possible to use increased tonal range data in a [[16bit workflow with hugin]] or work entirely with high [[dynamic range]] images such as floating-point [[TIFF]] from start to finish in a [[HDR workflow with hugin]].<br />
<br />
== Hugin components ==<br />
<br />
The following tools are part of the hugin suite:<br />
<br />
* [[hugin]] the gui front end.<br />
* [[nona]] a command-line replacement for [[PTStitcher]].<br />
* [[fulla]] correction of [[barrel distortion]], [[chromatic aberration]] and [[vignetting]].<br />
* [[nona_gui]] a version of [[nona]] with simple gui progress dialogs, similar to the windows version of [[PTStitcher]].<br />
* [[autooptimiser]] an experimental tool with the same interface as [[PTOptimizer]] except using pairwize optimization which doesn't require any manual pre-placement.<br />
* [[align_image_stack]] a tool to automate the process to [[align a stack of photos]].<br />
* [[vig_optimize]] command line tool to estimate photometric parameters.<br />
* [[panoglview]] OpenGL panorama viewer stored in sourceforge CVS alongside [[hugin]] which must be built separately.<br />
* [[hugin_hdrmerge]] merges multiple exposures to [[HDR]] using Khan anti-ghosting algorithm<br />
* [[hugin_stitch_project]] batch stitches a hugin project, performing any [[HDR]] merging or blending as necessary.<br />
<br />
More information, documentation and tutorials are available on the project website.<br />
<br />
== User interface ==<br />
<br />
* [[Hugin Main window]]<br />
* [[Hugin Assistant tab]]<br />
* [[Hugin Images tab]]<br />
* [[Hugin Camera and Lens tab]]<br />
* [[Hugin Crop tab]]<br />
* [[Hugin Control Points tab]]<br />
* [[Hugin Optimizer tab]]<br />
* [[Hugin Exposure tab]]<br />
* [[Hugin Stitcher tab]]<br />
* [[Hugin Preferences]]<br />
* [[Hugin Preview window]]<br />
* [[Hugin Control Points table]]<br />
* [[Hugin Keyboard shortcuts]]<br />
<br />
== Development ==<br />
<br />
Hugin is Open Source, and as such very much dependent on voluntary contributions of resources. If you have coding skills, you are welcome to look at the source code and contribute to it. Even if you don't have coding skills, you most likely have some skills that the project could use and you are more than welcome to contribute your time. The tasks requiring attention change frequently and so do the required skillset and resources. Join the hugin-ptx mailing list to find out what is going on at the moment and how you can help.<br />
<br />
At the time of writing (29-October-2007) there is a major effort going on to document and automate the building process of hugin so that the project can release binaries more frequently. See Test Builds below.<br />
<br />
'''Don't be afraid of failures in the building process'''<br />
* The likelyhood that errors will occur when following the build processes linked below is high.<br />
* Don't worry such failure will not compromise your computer.<br />
* The failure of the building process is actually your success! Every time you report such a failure, with as much detail as possible to how it came about, you are contributing to the progress toward a stable release.<br />
<br />
If you are fluent in other languages than English, you can help translate Hugin. There's a [[Hugin translation guide]] to help you get started or help when you run into translation problems.<br />
<br />
== Hugin 0.7.0 release schedule ==<br />
<br />
The community is working towards a Hugin 0.7.0 release. Good progress has been made so far, but there are still a few things to be done before<br />
0.7.0 can be released. This mainly includes working through the open bugs tagged for 0.7.0 in the hugin bug tracker.<br />
<br />
These are the main steps required for a release:<br />
<br />
* Check and fix bugs listed in the [https://sourceforge.net/tracker/?group_id=77506&atid=550441 sourceforge bug tracker] under group v0.7.0. A large number of bugs is very old and many of them probably do not apply to the current SVN anymore. Volunteers are needed that use the [http://panospace.wordpress.com/downloads/ test builds] to verify if the bugs still apply are needed. If the bug has already been fixed in the SVN version, close it (assuming you have the required access), or simply leave a note that it has been fixed (together with the SVN revision used for testing). If you can confirm a bug a bug that is older than 3-4 months, please raise its priority to 6. If it is a real show stoper (repeatable crash, raise the priority to 8).<br />
* Iterate the bug fix process until no more bugs that block the 0.7.0 release are in the sourceforge bug tracker.<br />
* After the GUI bugs have been fixed, issue a string freeze to allow translators to prepare the translations. The string freeze will be announced on hugin-ptx and on this page.<br />
<br />
Clearing the bugs in the sourceforge bug tracker is an iterative process. Feedback from tester is essential for this process. Please take the time to check if the older bugs apply to a current snapshot, if you like to see a release soon.<br />
<br />
== Test Builds ==<br />
<br />
{| style="margin: 1em auto 1em 1em;background:#FFFF99;color:#FF0000;text-align:left;border: solid #FF3300;"<br />
|-valign="top"<br />
! '''IMPORTANT:'''<br />
! These builds are for your computer. If you decide to share them with others, be aware that you are subject to the GPL, and that the general public may need guidance regarding what you distribute. Read the information in the packaging and distribution section below. If you are unsure, ask on the hugin-ptx mailing list for advice before posting a file for download.<br />
|}<br />
<br />
=== Goal ===<br />
<br />
an infrastructure for on-demand build and distribution of usable test-binaries for the most popular platforms. These builds are meant to enable users to test the newest features and report bugs. Ideally, on Pablo's demand all those who have a build chain will run it against the newest source code to produce the builds.<br />
<br />
=== Process ===<br />
<br />
# Experienced users will build the most current hugin and helpers (libpano, enblend, autopano, etc.) for the target platform of their choice, with support from coders.<br />
# The build process will be documented for each of the supported platform.<br />
# Users willing to spend some time learning how to build will reproduce the documented process.<br />
# Power users will script and automate the building process.<br />
# Users with packaging skills will package the builds for distribution (installers).<br />
# The produced binaries/installers will be made available on the web.<br />
<br />
=== Specific revisions ===<br />
<br />
When building from the repository, some revisions have bugs. This process is meant to build the latest revision so that if the latest revision has bugs these can be identified and corrected. However sometimes these bugs can be more critical than other times. If you need a more or less working version of hugin, try applying the process to one of the following revisions.<br />
<br />
==== hugin ====<br />
<br />
{| style="margin: 1em auto 1em 1em;background:#FFFFDD;text-align:left;border-top: thin dotted #333333;"<br />
|-valign="top"<br />
! width="100" |<br />
Revision<br />
! width="500" |<br />
Comments<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2629<br />
| style="border-top: thin dotted #333333;" |<br />
build on OpenSuSE 10.3, x86_64 and on ubuntu 7.10 x86 32bit [http://groups.google.com/group/hugin-ptx/t/e121bf92d3a4868b]<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2612<br />
| style="border-top: thin dotted #333333;" |<br />
first build in a long time reported to work on some OSX boxes<br />
[http://groups.google.com/group/hugin-ptx/t/552fb75a8fb5ec8a]<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2591<br />
| style="border-top: thin dotted #333333;" |<br />
builds on OpenSuSE 10.3 x86_64<br />
[http://groups.google.com/group/hugin-ptx/browse_thread/thread/6ccfe896bbcb0469]<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2587<br />
| style="border-top: thin dotted #333333;" |<br />
builds on Windows and ubuntu 7.10 AMD64, was used for a snapshot binary release [http://groups.google.com/group/hugin-ptx/browse_thread/thread/6ccfe896bbcb0469]<br />
|-valign="top" <br />
|}<br />
<br />
[[older hugin revision notes]]<br />
<br />
==== libpano ====<br />
<br />
{| style="margin: 1em auto 1em 1em;background:#FFFFDD;text-align:left;border-top: thin dotted #333333;"<br />
|-valign="top"<br />
! width="100" |<br />
Revision<br />
! width="500" |<br />
Comments<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
785<br />
| style="border-top: thin dotted #333333;" |<br />
builds on ubuntu 7.10 x86 32bit<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
770<br />
| style="border-top: thin dotted #333333;" |<br />
does not build [http://groups.google.com/group/hugin-ptx/browse_thread/thread/f69427e3b112bcca]<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
767<br />
| style="border-top: thin dotted #333333;" |<br />
does not build [http://groups.google.com/group/hugin-ptx/browse_thread/thread/f69427e3b112bcca]<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
759<br />
| style="border-top: thin dotted #333333;" |<br />
builds on AMD64 ubuntu 7.10<br />
|-valign="top"<br />
|}<br />
<br />
[[older libpano revision notes]]<br />
<br />
==== enblend ====<br />
<br />
{| style="margin: 1em auto 1em 1em;background:#FFFFDD;text-align:left;border-top: thin dotted #333333;"<br />
|-valign="top"<br />
! width="100" |<br />
Revision<br />
! width="500" |<br />
Comments<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2008-01-11<br />
| style="border-top: thin dotted #333333;" |<br />
builds on ubuntu 7.10 x86 32bit<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
2008-01-01<br />
| style="border-top: thin dotted #333333;" |<br />
builds on AMD64 ubuntu 7.10<br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
<br />
| style="border-top: thin dotted #333333;" |<br />
<br />
|-valign="top"<br />
|}<br />
<br />
[[older enblend revision notes]]<br />
<br />
=== Supported Platforms ===<br />
<br />
* If you don't find your preferred platform listed below '''and''' you are willing to contribute your time and skills to build hugin on it, feel free to add it to the table. We will accommodate any well supported platform in the regular release process.<br />
* The '''Build-Chain Responsibles''' listed below have access to a build chain on the selected platform and have agreed to run the build chain within 2 days of a request from Pablo. They will forward the resulting binary package to the Release Manager who will in turn put them up for download by the general public.<br />
* '''Redundancy is good'''. If you have access to one of the listed platforms, please try to run the documented process below and report success to hugin-ptx. If you think you could do this on a more regular basis, enter yourself in the Backup Build-Chain field.<br />
<br />
<br />
{| style="margin: 1em auto 1em 1em;background:#FFFFDD;text-align:left;border-top: thin dotted #333333;"<br />
|-valign="top"<br />
! width="100" |<br />
Platform<br />
! width="100" |<br />
Status<br />
! width="100" |<br />
Process<br />
! width="200" |<br />
Build-Chain Responsible<br />
! width="200" |<br />
Credits <br />
! width="200" |<br />
Backup Build-Chains <br />
|-valign="top" <br />
! style="border-top: thin dotted #333333;" |<br />
ubuntu 32bit<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling Ubuntu | OK]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
* Sébastien Perez-Duarte<br />
* Yuval Levy<br />
* Régis B.<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
ubuntu 64bit <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling Ubuntu | OK]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
<!-- spanned style="border-top: thin dotted #333333;" | --><br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
Fedora 32bit<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling Fedora | tbd]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
* Bruno Postle<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
Fedora 64bit <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling Fedora | tbd]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
<!-- spanned style="border-top: thin dotted #333333;" | --><br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
OSX IntelMac <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling OSX | draft]]<br />
| style="border-top: thin dotted #333333;" |<br />
Peter A. Crowley<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
* Ippei Ukai<br />
* JD Smith <br />
* Daniel M. German<br />
* Peter A. Crowley<br />
* David Haberthür<br />
* John Riley<br />
* Roger Howard<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
OSX PPC <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling OSX | draft]]<br />
| style="border-top: thin dotted #333333;" |<br />
Peter A. Crowley<br />
<!-- spanned style="border-top: thin dotted #333333;" | --><br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
Windows 32bit <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling Windows | draft]]<br />
| style="border-top: thin dotted #333333;" |<br />
Tom Sharpless<br />
| style="border-top: thin dotted #333333;" |<br />
* Tom Sharpless<br />
* John Navas<br />
* Jean-Marc Paratte<br />
* Yili Zhao<br />
* Yuval Levy<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
OpenSuse 32bit<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling OpenSuse | tbd]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
* Kornel Benko (10.3)<br />
* Peter Suetterlin (10.2)<br />
* Stephan Hegel (10.3 x86_64)<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
OpenSuse 64bit <br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
| style="border-top: thin dotted #333333;" |<br />
[[Hugin Compiling OpenSuse | tbd]]<br />
| style="border-top: thin dotted #333333;" |<br />
tbd<br />
<!-- spanned style="border-top: thin dotted #333333;" | --><br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
FreeBSD 32bit<br />
| style="border-top: thin dotted #333333;" |<br />
n/a<br />
| style="border-top: thin dotted #333333;" |<br />
n/a<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
Vasil Dimov, FreeBSD port maintainer<br />
| style="border-top: thin dotted #333333;" rowspan="2" |<br />
* confirmed to build on FreeBSD 6.2/i386<br />
* confirmed to build on FreeBSD 7.0/amd64<br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
FreeBSD 64bit <br />
| style="border-top: thin dotted #333333;" |<br />
n/a<br />
| style="border-top: thin dotted #333333;" |<br />
n/a<br />
<!-- spanned| style="border-top: thin dotted #333333;" | tbd --><br />
<!-- spanned style="border-top: thin dotted #333333;" | --><br />
| style="border-top: thin dotted #333333;" |<br />
|-valign="top"<br />
! style="border-top: thin dotted #333333;" |<br />
all platforms<br />
! style="border-top: thin dotted #333333;" colspan="5" |<br />
a big thank you to '''Pablo d'Angelo''' for supporting all of those building efforts.<br />
|-valign="top"<br />
|}<br />
<br />
=== Stati ===<br />
<br />
'''Build Chain'''<br />
* tbd: looking for responsible<br />
* OK: mostly automated build process ready on request<br />
* unavailable: temporarily unavailable (e.g. responsible on holiday)<br />
* HW-broken: the hardware is temporarily unavailable<br />
* SW-broken: temporarily dysfunctional, working on a fix<br />
* broken: nobody is working on a fix<br />
* unsupported: has been dropped for lack of support<br />
<br />
'''Process'''<br />
* tbd: status unknown<br />
* auto: work as documented and has been automated to a reasonable extent<br />
* OK: works as documented, could use automation / scripting<br />
* draft: documented, needs validation / testing / cleaning<br />
* incomplete: parts are missing (e.g. enblend, libpano)<br />
* outdated: worked in the past but needs an update<br />
* obsolete: nobody has the time to update<br />
<br />
== Packaging and Distribution ==<br />
<br />
=== Snapshots ===<br />
<br />
=== Release ===<br />
<br />
== Feedback ==<br />
<br />
When running through the building process documented above chances are that something goes wrong. While it is disappointing when the process ends in a flurry of cryptic error messages it is not harmful. This is the nature of software development and you are now part of it. There is still a lot of value in your experience and you can help improve the process and get closer to the hoped for software package. Please don't be ashamed that it did not work. This happens even to the most expert coders. Give the developers feedback on the hugin-ptx mailing list. Only with your feedback they can know that something goes wrong, and a well crafted feedback helps them find out quickly what went wrong and devise a solution. Be a part of the solution, not a part of the problem!<br />
<br />
To give good feedback, note down carefully all of this information while you are going through the instructions.<br />
# details about your computer. CPU, operating system, other particularities<br />
# the revision number of the code checked out with SVN (which appears at the end of the checkout process) or with CVS. Or, if you don't find a revision number, the date and time when you checked out the code.<br />
# the last step / command you entered into the command line<br />
# a copy of the last few lines displayed, from where you think the error messages started. Don't worry if you copy a couple of lines too many, it is better to give more lines than less lines.<br />
<br />
Even the standard feedback is good feedback. For those wishing to dig deeper, you can try<br />
* to use "make VERBOSE=1" when building hugin.<br />
* to do a debug build "cmake -DCMAKE_BUILD_TYPE=DEBUG" and use oprofile for profiling.<br />
<br />
== See also ==<br />
* [[hugin FAQ]] Frequently asked questions about hugin<br />
<br />
== External links ==<br />
* [http://hugin.sourceforge.net hugin homepage] for Screenshots, Tutorials, Documentation and Links.<br />
* [http://sourceforge.net/projects/hugin hugin sourceforge project] for Downloads, Bug database and Feature requests.<br />
* [http://hugin.svn.sourceforge.net/viewvc/hugin/ sourceforge SVN] to browse the hugin sourcecode.<br />
* [http://groups.google.com/group/hugin-ptx hugin-ptx GoogleGroup] to contribute to development and peer support.<br />
<br />
== Supported operating systems ==<br />
* [[windows software|Windows]]<br />
* [[Unix software|Linux and Unix]]<br />
* [[Mac software|Mac OS X]]<br />
<br />
[[Category:Software:Platform:Windows]]<br />
[[Category:Software:Platform:Linux]]<br />
[[Category:Software:Platform:Mac OS X]]<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9875Hugin Compiling Windows2008-01-13T17:15:04Z<p>Pablo: /* Building Hugin */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The recommended method is to download [http://www.microsoft.com/express/vc/ Microsoft Visual C++ 2008 Express Edition], and install it. For convinience I provide a ''Hugin SDK'' with precompiled libraries for MSVC 2008. It is recommended to use these, rather than to compile your own libraries.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building a hugin installer package:<br />
<br />
# [http://www.cmake.org CMake] Note that Microsoft Visual C++ 2008 Express Edition is not supported by CMake 2.4. Download the [http://www.cmake.org/HTML/Download.html#cvs Nightly CVS Windows Binary], until CMake 2.5 is released.<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin. (included in ''Hugin SDK'')<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# GNU gettext. (included in ''Hugin SDK'')<br />
<br />
For both MSVC and MinGW32 approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual C++ 2008 Express Edition =<br />
<br />
This also works with earlier version from 2003 onwards. However, you will need to compile the dependencies from scratch. For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
This is the recommended approach.<br />
<br />
Download the [http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2008_v1.zip ''Hugin SDK'']. and unzip it into a directory of your choice. I will use '''src''' in this document. Continue with [[#Building Hugin]].<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files (update: wxWidgets ships with an ancient version of libtiff, so LZW will still be disabled. The ''Hugin SDK'' additionally contains libtiff 3.8.2). To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode (svn root is: https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk), and save it to src/hugin-trunk. Remember the SVN revision, it will be needed later.<br />
<br />
Place all dependencies alongside the hugin-trunk source directory. Example (versions might be slightly outdated):<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
<br />
Run CMakeSetup to create the MSVC project files. If you use the ''Hugin SDK'' or have a 100% identical directory structure, CMakeSetup will pick up the dependencies automatically. Otherwise the paths to each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''.<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually. Press '''Configure'' again.<br />
# CMake will pick up the dependencies and show them to you. Press '''Configure''' again. Now the '''Ok''' button should be available. If CMake had problems picking up all dependencies (for example, if you build your own libraries). CMake will prompt you if it misses something. After some iterations, all dependencies should be picked up.<br />
# Press the '''Ok''' button.<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
# A NSIS installer can be build by building the '''PACKAGE''' target (NSIS needs to be installed for this). This is currently a default installer, without specific functionality.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 18:10, 13 January 2008 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9874Hugin Compiling Windows2008-01-13T17:12:51Z<p>Pablo: /* Downloading precompiled dependencies */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The recommended method is to download [http://www.microsoft.com/express/vc/ Microsoft Visual C++ 2008 Express Edition], and install it. For convinience I provide a ''Hugin SDK'' with precompiled libraries for MSVC 2008. It is recommended to use these, rather than to compile your own libraries.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building a hugin installer package:<br />
<br />
# [http://www.cmake.org CMake] Note that Microsoft Visual C++ 2008 Express Edition is not supported by CMake 2.4. Download the [http://www.cmake.org/HTML/Download.html#cvs Nightly CVS Windows Binary], until CMake 2.5 is released.<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin. (included in ''Hugin SDK'')<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# GNU gettext. (included in ''Hugin SDK'')<br />
<br />
For both MSVC and MinGW32 approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual C++ 2008 Express Edition =<br />
<br />
This also works with earlier version from 2003 onwards. However, you will need to compile the dependencies from scratch. For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
This is the recommended approach.<br />
<br />
Download the [http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2008_v1.zip ''Hugin SDK'']. and unzip it into a directory of your choice. I will use '''src''' in this document. Continue with [[#Building Hugin]].<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files (update: wxWidgets ships with an ancient version of libtiff, so LZW will still be disabled. The ''Hugin SDK'' additionally contains libtiff 3.8.2). To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode (svn root is: https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk), and save it to src/hugin-trunk. Remember the SVN revision, it will be needed later.<br />
<br />
Place all dependencies alongside the hugin-trunk source directory. Example (versions might be slightly outdated):<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
<br />
Run CMakeSetup to create the MSVC project files. <br />
run CMakeSetup and use this procedure:<br />
<br />
<br />
If you use the ''Hugin SDK'' or have a 100% identical directory structure, CMakeSetup will pick up the dependencies automatically.<br />
Otherwise the paths to each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''.<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually. Press '''Configure'' again.<br />
# CMake will pick up the dependencies and show them to you. Press '''Configure''' again. Now the '''Ok''' button should be available. If CMake had problems picking up all dependencies (for example, if you build your own libraries). CMake will prompt you if it misses something. After some iterations, all dependencies should be picked up.<br />
# Press the '''Ok''' button.<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# A NSIS installer can be build by building the '''PACKAGE''' target (NSIS needs to be installed for this).<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 18:10, 13 January 2008 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9873Hugin Compiling Windows2008-01-13T17:11:49Z<p>Pablo: /* Building with Microsoft Visual C++ 2008 Express Edition */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The recommended method is to download [http://www.microsoft.com/express/vc/ Microsoft Visual C++ 2008 Express Edition], and install it. For convinience I provide a ''Hugin SDK'' with precompiled libraries for MSVC 2008. It is recommended to use these, rather than to compile your own libraries.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building a hugin installer package:<br />
<br />
# [http://www.cmake.org CMake] Note that Microsoft Visual C++ 2008 Express Edition is not supported by CMake 2.4. Download the [http://www.cmake.org/HTML/Download.html#cvs Nightly CVS Windows Binary], until CMake 2.5 is released.<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin. (included in ''Hugin SDK'')<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# GNU gettext. (included in ''Hugin SDK'')<br />
<br />
For both MSVC and MinGW32 approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual C++ 2008 Express Edition =<br />
<br />
This also works with earlier version from 2003 onwards. However, you will need to compile the dependencies from scratch. For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
This is the recommended approach.<br />
<br />
Download the [http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2008_v1.zip ''Hugin SDK'']. and unzip it. Continue with [[#Building Hugin]].<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files (update: wxWidgets ships with an ancient version of libtiff, so LZW will still be disabled. The ''Hugin SDK'' additionally contains libtiff 3.8.2). To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode (svn root is: https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk), and save it to src/hugin-trunk. Remember the SVN revision, it will be needed later.<br />
<br />
Place all dependencies alongside the hugin-trunk source directory. Example (versions might be slightly outdated):<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
<br />
Run CMakeSetup to create the MSVC project files. <br />
run CMakeSetup and use this procedure:<br />
<br />
<br />
If you use the ''Hugin SDK'' or have a 100% identical directory structure, CMakeSetup will pick up the dependencies automatically.<br />
Otherwise the paths to each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''.<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually. Press '''Configure'' again.<br />
# CMake will pick up the dependencies and show them to you. Press '''Configure''' again. Now the '''Ok''' button should be available. If CMake had problems picking up all dependencies (for example, if you build your own libraries). CMake will prompt you if it misses something. After some iterations, all dependencies should be picked up.<br />
# Press the '''Ok''' button.<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# A NSIS installer can be build by building the '''PACKAGE''' target (NSIS needs to be installed for this).<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 18:10, 13 January 2008 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9872Hugin Compiling Windows2008-01-13T17:10:20Z<p>Pablo: updated build instructions for use with freely downloadable Microsoft Visual C++ 2008 Express Edition,</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The recommended method is to download [http://www.microsoft.com/express/vc/ Microsoft Visual C++ 2008 Express Edition], and install it. For convinience I provide a ''Hugin SDK'' with precompiled libraries for MSVC 2008. It is recommended to use these, rather than to compile your own libraries.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building a hugin installer package:<br />
<br />
# [http://www.cmake.org CMake] Note that Microsoft Visual C++ 2008 Express Edition is not supported by CMake 2.4. Download the [http://www.cmake.org/HTML/Download.html#cvs Nightly CVS Windows Binary], until CMake 2.5 is released.<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin. (included in ''Hugin SDK'')<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# GNU gettext. (included in ''Hugin SDK'')<br />
<br />
For both MSVC and MinGW32 approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual C++ 2008 Express Edition =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
This is the recommended approach.<br />
<br />
Download the [http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2008_v1.zip ''Hugin SDK'']. and unzip it. Continue with [[#Building Hugin]].<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files (update: wxWidgets ships with an ancient version of libtiff, so LZW will still be disabled. The ''Hugin SDK'' additionally contains libtiff 3.8.2). To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode (svn root is: https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk), and save it to src/hugin-trunk. Remember the SVN revision, it will be needed later.<br />
<br />
Place all dependencies alongside the hugin-trunk source directory. Example (versions might be slightly outdated):<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
<br />
Run CMakeSetup to create the MSVC project files. <br />
run CMakeSetup and use this procedure:<br />
<br />
<br />
If you use the ''Hugin SDK'' or have a 100% identical directory structure, CMakeSetup will pick up the dependencies automatically.<br />
Otherwise the paths to each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''.<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually. Press '''Configure'' again.<br />
# CMake will pick up the dependencies and show them to you. Press '''Configure''' again. Now the '''Ok''' button should be available. If CMake had problems picking up all dependencies (for example, if you build your own libraries). CMake will prompt you if it misses something. After some iterations, all dependencies should be picked up.<br />
# Press the '''Ok''' button.<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# A NSIS installer can be build by building the '''PACKAGE''' target (NSIS needs to be installed for this).<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 18:10, 13 January 2008 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9871Hugin Compiling Windows2008-01-13T16:29:11Z<p>Pablo: /* Deciding on the toolchain */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The recommended method is to download [http://www.microsoft.com/express/vc/ MSVC 2008 Express], and install it.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building hugin:<br />
<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin.<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# [http://gnuwin32.sourceforge.net/packages/gettext.htm msgfmt], available as part of the GnuWin32 gettext package<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2003_v2. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
If you using this compiler, you can skip building the dependencies and continue with building hugin itself.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
Place all dependencies alongside the hugin source directory. Example:<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
In this setup, the cmake build system will pick up most of the dependencies automatically. Otherwise the paths to<br />
each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. GNU make is also required, a Win32 port can be downloaded from http://sourceforge.net/projects/unxutils. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9786Hugin Compiling Windows2008-01-01T17:56:35Z<p>Pablo: updated link to precompiled dependencies</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building hugin:<br />
<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin.<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# [http://gnuwin32.sourceforge.net/packages/gettext.htm msgfmt], available as part of the GnuWin32 gettext package<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/hugin_enblend_sdk_msvc2003_v2. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
If you using this compiler, you can skip building the dependencies and continue with building hugin itself.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
Place all dependencies alongside the hugin source directory. Example:<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
In this setup, the cmake build system will pick up most of the dependencies automatically. Otherwise the paths to<br />
each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. GNU make is also required, a Win32 port can be downloaded from http://sourceforge.net/projects/unxutils. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9785Hugin Compiling Windows2008-01-01T17:54:32Z<p>Pablo: tools required for building hugin</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
# Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
# Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
The following additional programs are also required for building hugin:<br />
<br />
# [http://enblend.sf.net enblend 3.1]<br />
# [http://sf.net/projects/unxutils GNU make], required by hugin, not for building hugin.<br />
# [http://warsetup.jgaa.com/ War Setup 3]<br />
# [http://gnuwin32.sourceforge.net/packages/gettext.htm msgfmt], available as part of the GnuWin32 gettext package<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/sdk_msvc2003.zip, They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
If you using this compiler, you can skip building the dependencies and continue with building hugin itself.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
Place all dependencies alongside the hugin source directory. Example:<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
In this setup, the cmake build system will pick up most of the dependencies automatically. Otherwise the paths to<br />
each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. GNU make is also required, a Win32 port can be downloaded from http://sourceforge.net/projects/unxutils. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9784Hugin Compiling Windows2008-01-01T17:44:19Z<p>Pablo: updated instruction to fit current SVN</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/sdk_msvc2003.zip, They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
If you using this compiler, you can skip building the dependencies and continue with building hugin itself.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
Place all dependencies alongside the hugin source directory. Example:<br />
<br />
src/<br />
hugin-trunk<br />
OpenExr<br />
STLport-5.1.4<br />
boost_1_34_1<br />
enblend-3.1<br />
libpano/pano13<br />
wxMSW-2.8.6<br />
make/make.exe<br />
<br />
In this setup, the cmake build system will pick up most of the dependencies automatically. Otherwise the paths to<br />
each dependency will have to specified manually during the following cmake step<br />
<br />
# Run cmake, select hugin source and build directories. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. GNU make is also required, a Win32 port can be downloaded from http://sourceforge.net/projects/unxutils. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# If building is done using an SVN checkout, the SVN revision number needs to be specified manually.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
# Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build (press F7). After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed into INSTALL/FILES subdirectory of the build directory specified during the CMake step.<br />
# Creating the .msi installer by opening INSTALL/hugin.warsetup with the WarSetup program available from http://warsetup.jgaa.com/ and clicking on the '''Build''' button.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Ubuntu&diff=9701Hugin Compiling Ubuntu2007-12-19T14:20:06Z<p>Pablo: remove obselete comment about the tools</p>
<hr />
<div>These instructions are work in progress. Initially tested on a blank installation of Kubuntu 6.06 (Edgy Eft) on a AMD64 computer, they have also been tested on Ubuntu 7.04 on a AMD64 computer and Ubuntu 7.10 on an AMD Athlon XP computer. Apart from the odd change in package name, nothing should be substantially different (and if does not work, please leave a comment [http://theseblog.free.fr/2007/10/building-hugin-in-ubuntu-feisty-fawn.php here] and on the hugin-ptx mailing list. Don't worry if the same package appears twice in an apt-get install line - apt-get will update existing packages if there is a newer version, and ignore duplicates if the latest version is already installed. On the other hand, if apt-get says that it can't find a package, it might be the odd change in package name. You can find a replacement package by using apt-cache search with a substring of the package required, e.g.<br />
<pre>apt-cache search wxW<br />
</pre><br />
<br />
The goal is to build hugin and the whole set of helper applications required.<br />
<br />
== Building environment ==<br />
Since we are going to build hugin, libpano13 and enblend we need to download and install all the development packages. This is very easy with apt-get.<br />
In a terminal window (K menu -> System -> Konsole or Applications -> Accessories -> Terminal)<br />
<br />
<pre>sudo apt-get install build-essential autoconf automake1.9 libtool flex bison gdb <br />
</pre><br />
<br />
In a amd64 environment you will need the following packages<br />
<pre>sudo apt-get install libc6-dev-amd64 lib64gcc1</pre><br />
<br />
In a i386 system the equivalent is probably (COULD SOMEBODY CHECK THIS ONE?)<br />
<pre>sudo apt-get install libc6-dev libgcc1</pre><br />
<br />
To get the bleeding edge we'll need access to the SVN and CVS repositories, and for this we need the correct tools:<br />
<pre> sudo apt-get install subversion cvs<br />
</pre><br />
<br />
== Building Enblend ==<br />
<br />
Get the dependencies. If you are working with large images (300 megapixels and up), you should have a libtiff-devel compiled with large file support and libstdc++6.<br />
<br />
<pre>sudo apt-get install pkg-config libtiff4-dev libboost-graph-dev libboost-thread-dev \<br />
liblcms1-dev libglew-dev libplot-dev libglut3-dev libopenexr-dev libopenexr2c2a libxi-dev<br />
</pre><br />
<br />
Once all dependencies are in place, we get the code from CVS (simply press ENTER when prompted for a password on the login command) and build it.<br />
<br />
<pre>cvs -d:pserver:anonymous@enblend.cvs.sourceforge.net:/cvsroot/enblend login<br />
cvs -z3 -d:pserver:anonymous@enblend.cvs.sourceforge.net:/cvsroot/enblend co -P enblend<br />
cd enblend</pre><br />
We are then ready to compile.<br />
<pre>make -f Makefile.cvs<br />
./configure<br />
make<br />
</pre><br />
<br />
The second make step can be very long and memory consuming. Make sure you have enough swap space, and go get a healthy snack while the computer is compiling.<br />
<br />
If you encounter problems at any of these stages, please report back to the hugin-ptx mailing list. Report what command in the sequence you were executing, what machine/operating system, the revision checked out from CVS, and all other relevant information.<br />
<br />
You are then ready to install with<br />
<pre>sudo make install</pre><br />
<br />
== Building libpano13 ==<br />
libpano13 is the new version of the PanoTools libraries. This is a necessary component for hugin, and we need to build it first.<br />
To build libpano13 we need some libraries and particularly their <code>dev</code> package:<br />
<pre>sudo apt-get install lib64z1 lib64z1-dev libpng12-dev libjpeg62-dev libtiff4-dev</pre><br />
<br />
We then need to download the source code from SVN:<br />
<pre>svn co https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano libpano13<br />
cd libpano13<br />
./bootstrap</pre><br />
<br />
If any libraries are missing, the script will complain (or at least, let you know that some library hasn't been found). In that case you probably need to install the library. To find in what package is that library, a general rule is to run the command <code>apt-cache search ''missingfile''</code>, find the relevant library and install both the library and the related <code>-dev</code> package.<br />
Run the <code>./configure</code> script and repeat this process until you have met all the dependencies.<br />
Then we are ready to launch the make process with<br />
<pre>make</pre><br />
<br />
If the library successfully compiles, you have to install it with<br />
<pre>sudo make install<br />
sudo ldconfig</pre><br />
The last part is for the OS to be aware of the new library (that has been installed in <code>/usr/local/lib</code>).<br />
We can now go back up one folder level and get ready for hugin.<br />
<pre>cd ..</pre><br />
<br />
== Building hugin ==<br />
<br />
Some additional libraries are needed. We need first to activate the <code>universe</code> repository (in adept package manager, or by editing the /etc/apt/sources.lst file for example).<br />
<pre>sudo apt-get install cmake libopenexr-dev libboost-dev boost-build libboost-thread-dev libboost-graph-dev gettext libwxgtk2.8-dev</pre><br />
<br />
We download the source from SVN, as before<br />
<pre>svn co https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk/ hugin<br />
cd hugin</pre><br />
<br />
'''Important:''' at the time of writing hugin is under development. The SVN trunk is likely to change often and can sometimes have critical bugs. Try the above first. If it does not work, please report back to the hugin-ptx mailing list. If you need a recent working version of hugin, find out from the mailing list what is the latest working revision number and plug it in after the -r switch in<br />
<pre>svn co -r 2539 https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/trunk/ hugin<br />
cd hugin</pre><br />
<br />
hugin has to be built using cmake (which we installed before).<br />
<pre>cmake -DCMAKE_INSTALL_PREFIX=/usr/local .</pre><br />
<br />
Finally, launch the compilation and installation with<br />
<pre>make<br />
sudo make install<br />
sudo ldconfig</pre><br />
<br />
Reference: [http://theseblog.free.fr/2007/10/building-hugin-in-ubuntu-feisty-fawn.php]<br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Linux]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9585Hugin Compiling Windows2007-11-24T23:51:24Z<p>Pablo: prepare for updated sdk</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation (and less headaches during building) I have build everything against the older, multithreaded runtime libraries (\MT option), and linked all exectuables statically.<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/sdk_msvc2003.zip, They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
If you using this compiler, you can skip building the dependencies and continue with building hugin itself.<br />
<br />
If you are using Visual C++ 7.1 (Visual Studio 2003) or 8.0 (Visual Studio 2005), you can save a lot of time and aggravation by getting precompiled Boost libraries from [http://www.boost-consulting.com/products/free BoostConsulting]. You first download an installer program, which when run lets you choose which library variants you want to install. For Hugin you need the multithreaded static libraries, built for the static Microsoft C runtime with the compiler you intend to use. If you already have a Boost installation, you can just add these libraries to it, otherwise install the Boost headers too. <br />
<br />
Windows Boost libraries are named according to version, compiler and MS runtime variant (multi|single thread, static|dll) so take care that the Hugin build uses the right names. Example:<br />
libboost_date_time-vc80-mt-s-1_34_1.lib<br />
prefix 'lib' shows this is a static link library, not the import library for a Boost dll; 'vc80' says built with VC8.0; 'mt-s' built for release version of the Microsoft multithread static C runtime LIBCMT (i.e. with compiler switch '/MT') (the debug version has 'mt-sgd'); '1_34_1' built from Boost version 1.34.1 source.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.8.4, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.34_1<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. To avoid nasty popup messages with the<br />
command line tools we are going to build, additionally add:<br />
<br />
#define TIF_PLATFORM_CONSOLE<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
It may be more reliable to build the wxWidgets libraries with the distributed MSVC projects, as described [http://www.wxwidgets.org/wiki/index.php/MSVC_.NET_Setup_Guide here]. When I used the commandline method several libraries were built wrong, or not at all. -- TKSharpless<br />
<br />
I never had trouble using the makefiles, maybe thats a MSVC 2005 issue? -- Pablo d'Angelo<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage --with-thread<br />
<br />
This will build the boost thread library.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
It is a good idea to create new target configurations, say HuginRelease and HuginDebug, with the Visual Studio Configuration Manager, and apply the above changes to them, so that you don't lose the original project settings. This also makes the Hugin-appropriate libraries easy to find as they will be built in directories named for the configurations. They should be installed in directories named that way, too; the install commands make those directories in the Deploy/... tree, but fail to copy the static libraries there because the dll library names are built into them. However it is easy enough to copy the libs from the build folders by hand. The ilmbase libraries must be in the Deploy tree before IlmImf is built. -- TKSharpless<br />
<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Building Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C and CXX runtime libraries from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small><br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Platform:Windows]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9210Hugin Compiling Windows2007-10-28T21:27:06Z<p>Pablo: some more tips on the boost build</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/sdk_msvc2003.zip, They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.1, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details, especially [http://www.boost.org/more/getting_started/windows.html#or-build-binaries-from-source Build binaries from source]. Download bjam exectable and place it in the boost directory. Open the MSVC Command line prompt located in Start Menu -> Programs Microsoft Visual Studio -> Utilities, change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, you can check which libraries are available with '''bjam --show-libraries''' and enable or disable libs with the '''--with-library-name''' or '''--without-library-name''' bjam command line options.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C and CXX runtime libraries from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9209Hugin Compiling Windows2007-10-28T21:17:36Z<p>Pablo: provide link to my compiled libs</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used from http://hugin.panotools.org/sdk/MSVC/sdk_msvc2003.zip, They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. I have uses MSVC 2003 to create these, they might work with newer versions of MSVC, except the boost libraries. I'm sure at least boost will only work with the compiler it has been build with, and thus needs to be recompiled if you use MSVC 2005 or later.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.1, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C and CXX runtime libraries from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9206Hugin Compiling Windows2007-10-28T14:49:36Z<p>Pablo: /* Building wxWidgets */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.1, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C and CXX runtime libraries from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9205Hugin Compiling Windows2007-10-28T14:49:03Z<p>Pablo: Need to use same character type for both debug and release wxWidget libraries.</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.1, but later version should work, too<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build Unicode debug release libraries, execute the following commands:<br />
<br />
cd wxWidgets*/build/msw<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C and CXX runtime libraries from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9204Hugin Compiling Windows2007-10-28T14:33:52Z<p>Pablo: use zlib,tiff,jpeg,png from wxWidgets</p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release libraries, execute the following commands:<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier. zlib, jpeg, png and tiff libraries from the wxWidgets build can be reused. Their includes are in wxWidgets/src/(zlib|jpeg|png|tiff), and the libs are in wxWidgets/lib/vclib/wx*.lib<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C runtime library from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9202Hugin Compiling Windows2007-10-28T11:18:00Z<p>Pablo: </p>
<hr />
<div>NOTE: this is work in progress and not finished yet. Please add clarifications or comments for the individual steps.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release libraries, execute the following commands:<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C runtime library from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
= Building using MinGW =<br />
<br />
I have managed to build the older, pre GSoC 2007 version with MinGW, but still having some problems with the new trunk. Once these are resolved, I will provide instructions<br />
<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9200Hugin Compiling Windows2007-10-28T09:32:36Z<p>Pablo: /* Compiling Hugin */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release libraries, execute the following commands:<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
# Run cmake, select hugin source and build directories, tick the '''show advanced''' button. Do not choose the same directories for both source and build.<br />
# Press '''Configure''<br />
# fill out red fields, select appropriate library and include paths, if required. The msgfmt program can be found in the gettext package installed earlier.<br />
# Press '''Configure'''<br />
# If more warnings and red lines appear, goto 3.<br />
# Adjust some compiler settings in the CMAKE_C*_FLAGS entries.<br />
#* Change C runtime library from \MD to \MT.<br />
#* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle).<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it and open the generated hugin.sln file with MSVC. Switch to Build Type to Release and start the build. After quite some time hugin should be build. In order to run hugin, it needs to be installed so that data files are in the right place. This is done by building the '''INSTALL''' project. The binaries and all required files will be installed to CMAKE_HUGIN_PREFIX. By default this is the "Program Files" folder of your windows machine.<br />
<br />
<small>--[[User:Pablo|pablo]] 10:32, 28 October 2007 (CET)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9199Hugin Compiling Windows2007-10-28T09:24:57Z<p>Pablo: Fix formating, minor clarifications</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the source packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net. Use version 2.9.12 or later. Latest SVN is even better.<br />
<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the source packages.<br />
<br />
==== Building wxWidgets ====<br />
<br />
1. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu) and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release libraries, execute the following commands:<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
==== Building boost ====<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue<br />
<br />
bjam stage<br />
<br />
This will build all boost library, and take several hours. Hugin only needs the boost thread library, if possible try to<br />
build only that one.<br />
<br />
==== Building OpenEXR ====<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs. For the all static windows binaries, quite some changes to the MSVC project files are needed.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the call to '''install*.cmd''', such as '''..\..\..\installIlmImf.cmd $(IntDir)'''<br />
<br />
Apply the same procedure to the openexr-1.6 source code. Here only the IlmImf and IlmImfTest projects are needed by Hugin.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
==== Building Panotools ====<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.<br />
<br />
<small>--[[User:Pablo|pablo]] 03:12, 27 October 2007 (CEST)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9198Hugin Compiling Windows2007-10-28T09:10:35Z<p>Pablo: /* Deciding on the toolchain */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.<br />
<br />
<small>--[[User:Pablo|pablo]] 03:12, 27 October 2007 (CEST)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9197Hugin Compiling Windows2007-10-27T01:14:44Z<p>Pablo: /* Build all required dependencies from scratch */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
<br />
[[Build_pano12_from_sourcecode_MSVC|Building Pano13 with MSVC]] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.<br />
<br />
<small>--[[User:Pablo|pablo]] 03:12, 27 October 2007 (CEST)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9196Hugin Compiling Windows2007-10-27T01:14:06Z<p>Pablo: /* Build all required dependencies from scratch */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
<br />
[Build_pano12_from_sourcecode_MSVC][Building Pano13 with MSVC] is described on a separate page.<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.<br />
<br />
<small>--[[User:Pablo|pablo]] 03:12, 27 October 2007 (CEST)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9195Hugin Compiling Windows2007-10-27T01:12:14Z<p>Pablo: </p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
Building Pano13 is described on a separate page.<br />
<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.<br />
<br />
<small>--[[User:Pablo|pablo]] 03:12, 27 October 2007 (CEST)</small></div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9194Hugin Compiling Windows2007-10-27T01:11:37Z<p>Pablo: /* Deciding on the toolchain */</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system.<br />
<br />
1. Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
2. Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
Building Pano13 is described on a separate page.<br />
<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Compiling_Windows&diff=9193Hugin Compiling Windows2007-10-27T01:10:59Z<p>Pablo: First, very rough try on the build process of hugin on Windows</p>
<hr />
<div>NOTE: this is work in progress and not finished yet.<br />
<br />
= Why do I want to compile hugin? =<br />
<br />
If you want to fiddle with the hugin code, test new features or help squashing bugs, and do all that on Windows, this is the guide for you. Be warned that building hugin on Windows is not a piece of cake, so only try if you know the dark sides with all the development tools involved.<br />
<br />
For normal testers it is better to use the binary snapshots we will offer during the preparation period for hugin 0.7. This guide is designed to be a help for people who have expressed interest in build Windows version of the current hugin code on a regular basis.<br />
<br />
This guide will describe two ways of building the latest trunk. It does not apply to the hugin code prior to 2007/10/27.<br />
<br />
= Deciding on the toolchain =<br />
<br />
Currently, there are two methods for building hugin. Both are based on the CMake build system using by hugin.<br />
<br />
- Compilation with Microsoft Visual Studio .NET. MSVC 2003 or later is required. The free express edition will probably also work, but is probably even harder to setup.<br />
- Compilation with MinGW32. This does not require the Microsoft compiler and even allows cross compilation of binaries for windows on a linux machine. Until now, only the cross compilation approach has been tried, but a building on a native system should also be possible.<br />
<br />
For both approaches, the hardest task is the compilation of the libraries required by hugin. This mainly includes wxWidgets, boost, libpano13 and OpenEXR.<br />
<br />
= Building with Microsoft Visual Studio .Net 2003 (or later) =<br />
<br />
For simpler installation I have build everything against the older, multithreaded runtime libraries (\MT option).<br />
<br />
== Getting the dependencies ==<br />
<br />
It is tempting to download precompiled libraries from the different projects, and use those. Be prepared that they might have been created with different compiler setting (Especially with a different runtime libraries). This can lead to hard to find and nasty problems and amount to days of depressing work (I speak from experience).<br />
<br />
=== Downloading precompiled dependencies ===<br />
<br />
Easy way, download the libraries I (Pablo d'Angelo) have used. They have been used for the creation of most hugin releases and should work reliably, even if they are not the latest versions. They can soon be downloaded from hugin.panotools.org/sdk/msvc I'm currently cleaning up the packages, please be patient. I have uses MSVC 2003 to create these, the might not work on other compilers. I'm sure at least boost will only work with the compiler it has been build with.<br />
<br />
=== Build all required dependencies from scratch ===<br />
<br />
Download the packages. Newer versions might work, too.<br />
<br />
1. Download wxWidgets from http://www.wxwidgets.org, I used 2.6.0<br />
2. Download boost from http://www.boost.org, I used 1.33<br />
3. Download OpenEXR source (IlmBase and OpenEXR) from http://www.openexr.com/<br />
4. Download panorama tools source (pano13), from http://panotools.sf.net<br />
Version 2.9.6 or later is required, latest SVN is recommended.<br />
5. Download and install gettext installer package from http://gnuwin32.sf.net<br />
<br />
Unpack the packages.<br />
<br />
Building wxWidgets:<br />
<br />
1. Prepare wxWidgets source code, <br />
. Open libs/wxWidgets/src/tiff/tiffconf.h in your favorite editor, and add<br />
<br />
#define ZIP_SUPPORT<br />
<br />
near line 90 to support ZIP compressed tiff files. This might not be needed in<br />
newer version of wxWidgets.<br />
<br />
2. build wxWidgets: start the MSVC command line shell (from the startmenu)<br />
and cd to the wxWidgets/build/msw. To build ANSI debug and Unicode release<br />
libraries, execute the following commands<br />
<br />
nmake -f makefile.vc BUILD=debug UNICODE=0 SHARED=0 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 RUNTIME_LIBS=static<br />
<br />
<br />
Building boost:<br />
<br />
Refer to the boost documentation for details. Here is a short overview:<br />
Download bjam exectable from http://www.boost.org/tools/build/v1/build_system.htm<br />
and place it in the boost directory. Open the MSVC Command line prompt and<br />
change directory to the boost dir and issue:<br />
<br />
bjam stage<br />
<br />
<br />
Building OpenEXR:<br />
<br />
This is a tricky one, because the MSVC project files have been set up for DLL builds with the \MD runtime, and a custom program is used to prepare the DLLs.<br />
<br />
Build according to README_win in ilmbase-1.0.0 but changed the runtime of all projects to MT. <br />
<br />
For all projects do:<br />
* set each project to static lib<br />
* remove OPENEXR_DLL, _USEDLL and *_EXPORTS defines<br />
* set runtime to MT<br />
* disable SSE2, to generate binaries that run on all platforms<br />
* remove the createDLL part of the post-build command, but keep the<br />
call to install*.cmd, such as "..\..\..\installIlmImf.cmd $(IntDir)"<br />
<br />
Apply the same procedure to the IlmImf and IlmImfTest project of the OpenEXR source code.<br />
Follow the same process as for IlmBase, but additionally, but additionally add include path for the zlib library (inside the wxWidget/src/zlib) to the IlmImf project, and wxWidget/libs/_vc/wxzlib.lib to the IlmImfTest linker options. The tests should run without errors.<br />
<br />
Building Pano13 is described on a separate page.<br />
<br />
<br />
=== Compiling Hugin ===<br />
<br />
Use SVN to retrieve the latest hugin sourcecode, run CMakeSetup and use this procedure:<br />
<br />
1. Run cmake, tick show advanced, select hugin source and build directories Do not choose the same directories for both source and build.<br />
2. Press Configure<br />
3. fill out red fields, select appropriate library and include paths, if required. The msgfmt program is in the gettext package installed earlier.<br />
4. Press Configure<br />
5. If more warnings and red lines appear, goto 3.<br />
6. Adjust some compiler settings in the CMAKE_C*_FLAGS entries<br />
* Change C runtime library from \MD to \MT<br />
* Reduce debug level from \Zl to \Zd (otherwise the debug files become bigger than MSVC can handle)<br />
<br />
Once all fields have been filled out, the "Ok" button should be available. Press it, and open the generated hugin.sln file. Switch to Release and start the build.<br />
<br />
By building the "INSTALL" project, hugin will be installed into your usual "Program Files" directory.</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_FAQ&diff=9192Hugin FAQ2007-10-26T23:15:00Z<p>Pablo: Added link to windows compilation instructions</p>
<hr />
<div>== Installation ==<br />
<br />
=== How can I compile Hugin.app on my OSX machine? ===<br />
<br />
See [[Hugin_Compiling_OSX|Compiling Hugin on OSX]]<br />
<br />
=== How do I compile hugin on my linux machine? ===<br />
<br />
For ubuntu/debian users, Rob Park has written a good [http://exolucere.ca/articles/compile-hugin-ubuntu Compile Hugin on Ubuntu] document.<br />
<br />
=== How do I compile hugin on my Windows machine? ===<br />
<br />
See [[Hugin_Compiling_Windows|Compiling Hugin on Windows]]<br />
<br />
=== make install fails when executing the update-desktop script ===<br />
<br />
If make install fails with the following error message<br />
<br />
*** calling /usr/bin/update-desktop-database<br />
*No directories in update-desktop-database search path could be processed and updated.* <br />
<br />
rerun the ./configure script with --disable-desktop<br />
<br />
=== Compilation of PTWXDlg.cpp failes ===<br />
<br />
If you see this or a similar compilation error<br />
<br />
PTWXDlg.cpp: In function 'void registerPTWXDlgFcn()':<br />
PTWXDlg.cpp:176: error: invalid conversion from 'void (*)(char*,<br />
char*)' to 'void (*)(char*, ...)'<br />
PTWXDlg.cpp:176: error: initializing argument 1 of 'void<br />
PT_setErrorFcn(void (*)(char*, ...))'<br />
make[3]: *** [PTWXDlg.lo] Error 1<br />
<br />
please update to libpano 2.8.4 or later and recompile. Unfortunately the ./configure script of<br />
hugin 0.6.1 only checks for libpano 2.8.1.<br />
<br />
=== hugin crashes during optimisation ===<br />
<br />
If you have installed hugin 0.6 or later using an rpm package, make sure that you have panotools 2.8.3 or later installed. Hugin 0.6 and later will crash if used with an earlier version of panotools.<br />
<br />
=== Autopano-SIFT can not be used from inside hugin (LINUX) ===<br />
<br />
Under some Linux systems (for example Fedora Core), mono programs (Autopano-SIFT is written in C#) are not directly executable. When trying to automatically create control points hugin cannot start autopanog.exe.<br />
Open the Preferences, and use<br />
<br />
mono `which autopanog.exe`<br />
<br />
as the autopano-SIFT program.<br />
<br />
== Control Point creation ==<br />
<br />
=== How do I add control points ===<br />
The [[control points]] editor is quite powerful, but its usage is probably not obvious on the first try. Here are some ways the developers use the Control Point panel:<br />
<br />
1. Selecting control points in 100% zoom.<br />
<br />
This method needs some scrolling, if big images are used. You might want to try the fit to window zoom setting in that case. Switch to the Control Points tab, and use the following settings:<br />
<br />
Zoom: 100%<br />
[X] auto fine tune<br />
[X] auto add<br />
[X] auto estimate<br />
<br />
Click on a prominent feature in the left image. If the image pair already contains control points, [[hugin]] will try to select the point in the other image. If its the first point in this pair, click near the same feature on the right image. The second point will be placed and fine tuned automatically. If you are not happy with the placement, both points can be moved by dragging them to a better position. Press the "f" key to fine tune the point in a small area.<br />
<br />
<br />
2. Selecting control points in fit to window mode.<br />
<br />
I uses this mode if I need to set points on big images. Switch to the Control Points tab, and use the following settings:<br />
<br />
Zoom: fit to window<br />
[X] auto fine tune<br />
[ ] auto add<br />
[X] auto estimate<br />
<br />
Click on left image. The image will be shown in 100% view. Within the detailed view, click on a prominent feature. If the image pair already contains control points, hugin will try to select the point in the other image. If its the first point in this pair, click near the same feature on the right image. The point will be placed and fine tuned automatically. If you are not happy with the placement, both points can be moved by clicking at the desired position. Move the point close to the desired feature and press the "f" key to fine tune the point. When the points are on the same feature, press the right mouse button, or press the "a" key to add the control point pair. It will then be shown in the list below the image.<br />
<br />
=== How do I scroll both images at the same time? ===<br />
<br />
Try pressing the shift key while moving the mouse. The control key or the middle mouse button can be used to scroll only the image under the mouse cursor.<br />
<br />
=== How do I stop Hugin pausing for a moment after every click? ===<br />
<br />
The ''preview window'' updates continuously whenever anything changes, so disable the preview auto-update, close it or make it smaller if you don't need it.<br />
<br />
Otherwise, picking [[control points]] with ''auto fine tune'' selected can involve a lot<br />
of processing. You can reduce this by ''selecting File -> Preferences -> Finetune'' and<br />
lowering the values for ''Patch width'', ''Search area width'' and ''Local search area width''.<br />
This means you can't be so sloppy when clicking to create control points, but the results will<br />
be the same.<br />
<br />
== Common problems when creating a panorama ==<br />
<br />
=== How can I reuse a project as a template? ===<br />
<br />
If you copy a .pto project to a different folder and open it with hugin, you will be prompted for the 'missing' images. You should delete any control points from this template project since they won't be relevant to the new photos.<br />
<br />
=== How do I straighten a curved horizon? ===<br />
If the panorama looks nice but the horizon is curved, there are two ways to improve the image and straighten the horizon. First, try optimizing the view by selecting "Positions and View" as the optimization mode and run the optimizer afterwards. By clicking "Calculate Field of View" in the "Stitcher" tab and displaying the preview window afterwards you can check if the image has been improved.<br />
<br />
If it is still curved, you have to add vertical guide control points in the "Control Points" tab. Usually two [[vertical control points]] are enough to straighten the horizon nicely. Often edges of buildings, poles or other man made structures provide good vertical lines. To add a vertical control point, switch to the control point editor and select the same image on both sides. Place a control point on the left image on the upper area of the vertical feature. In the right image, select a control point on the lower area of the features, and press the Add button. Once the new point has been added, its type should automatically switch to "vertical line". You might want to switch off the auto-add and auto-estimate options while doing this to avoid naggy dialogs while adding these guide points.<br />
<br />
Two points that are roughly 90 degrees apart provide the best effect.<br />
<br />
See also the related perspective correction tutorials: [http://hugin.sourceforge.net/tutorials/architectural/en.shtml hugin tutorial on perspective correction], [[Perspective correction]], [[Leveling a Finished Panorama]]. While these are concerned with correction of the perspective in one image, the same technique can be used for<br />
leveling a panorama.<br />
<br />
=== Half the panorama is black, my pictures fill only the right half of the output ===<br />
<br />
Hugin uses the first photo as the ''anchor'' image and puts it in the middle by default. This means that if you shot a sequence from left to right, the images will fill the right hand side of the panorama. There are two ways to fix this:<br />
<br />
* Open the '''preview''' window and click the '''center''' button.<br />
* or select the middle photo, hit '''anchor this image for position''' and '''reset''' in the '''images''' tab, then reoptimise.<br />
<br />
=== I get visible bands in the sky and other flat areas, what can I do? ===<br />
<br />
Make sure you are using [[enblend]] to do the final image assembly, this will blend the overlap as much as is possible - Enable enblend by stitching the images '''into a high quality TIFF file''' in the '''stitcher''' tab.<br />
<br />
If you still have problems, then you probably have to correct [[vignetting]] in your images. In the vignetting area of '''camera and lens''' tab, select '''edit parameters...'''. Then select '''division''', '''polynomial''' and '''estimate polynomial''' to calculate a vignetting correction curve for your camera combination - This will be applied to every photo in your project when you click '''OK'''.<br />
<br />
=== My photos never quite line up, what can I do? ===<br />
<br />
It is normal to get little stitching [[parallax]] errors if<br />
the camera moves between photos. The solution is to rotate the camera around<br />
the [[no-parallax point]] using a [[Heads|panoramic head]] or [[philopod]].<br />
<br />
Otherwise you can sometimes improve things by optimising the ''d & e'' parameters<br />
separately - When you optimise '''everything''', unselect '''Inherit''' in<br />
the '''camera and Lens''' panel for 'd & e'.<br />
<br />
If these parallax errors are still large, you need to decide which<br />
parts of the scene that you want to line-up and which parts don't<br />
matter. Select [[control points]] only on objects that you do want to<br />
line-up and which are all about the same distance from the camera.<br />
<br />
The remaining broken lines can then be retouched in a photo editor like the [[gimp]].<br />
The ''shear'' tool is ideal for bending the lines and<br />
[[Mending parallax errors with the shear tool|getting them to line up]].<br />
<br />
== Postprocessing ==<br />
<br />
=== Why is the ICC profile of my input images not preserved? ===<br />
<br />
Since hugin 0.5 and enblend 2.4 [[colour profile|ICC profiles]] in the input files are transfered to the output panorama. Please update to a current version.<br />
<br />
=== How can I postprocess the image using multiple layers in The Gimp? ===<br />
<br />
Unfortunately, The [[Gimp]] can't read [[PSD]] formatted files generated by [[PTStitcher]], and the multiple [[TIFF]] output it produces is cumbersome to use. There are two possibilities to work around this:<br />
<br />
*Use the [[nona]] stitcher, to output to a multilayer TIFF format.<br />
This will will produce a multi_layer.tif file, that contains all remapped images, cropped to their bounding box. This will save a lot of space, compared to a "traditional" PTStitcher layered output file, where all layers have the full panorama size.<br />
<br />
Unfortunately, The Gimp 1.2 and 1.3 can't load multilayer TIFF files. Please use Gimp 2.0 or later.<br />
<br />
*If you need [[PTStitcher]] features not supported by nona, you can also use [[tif2xcf]], to combine the multiple TIFF output into a multilayer XCF.<br />
Unfortunately this requires a lot of memory because it stores each remapped image in a layer with the size of the final panorama.<br />
<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Preferences&diff=8996Hugin Preferences2007-07-26T19:17:50Z<p>Pablo: /* Basic settings */</p>
<hr />
<div>= Panotools =<br />
<br />
By default, [[hugin]] uses the internal [[nona]] stitcher.<br />
Here you can enter an alternative stitching engine such as [[PTStitcher]] or [[PTmender]].<br />
<br />
= Assistant =<br />
<br />
The [[Hugin Assistant tab]] automates the entire panorama creation process, these<br />
settings allow you to customise the assistant.<br />
<br />
== Image loading ==<br />
<br />
Select '''Automatically align images after loading''' to run the second '''Align...'''<br />
step immediately after loading the images.<br />
<br />
== Auto align ==<br />
<br />
Auto align uses [[autopano-sift]] or [[autopano]] to generate [[control points]]<br />
between pairs of images, set '''Number of Ctrl Points per overlap''' to control<br />
the number of control points. Note that although most pictures can be stitched<br />
with just three or four control points, automatically generated points tend not<br />
to be very evenly distributed, so this number should be set to ten or more<br />
<br />
The size of the output '''Panorama Image Size''' is usually set in the<br />
[[Hugin Stitcher tab]] where it is also possible to '''Calculate Optimal Size'''<br />
based on the sizes of the input images. The '''Auto align''' process<br />
does something similar, though here you can set a smaller output as a percentage.<br />
Generally setting a percentage of 70% leads to no great loss of quality due to<br />
the way a camera [[CCD]] samples data.<br />
<br />
== Create ==<br />
<br />
After stitching you can open the final image in an external program, this could be an image editor such as the [[Gimp]] or an interactive panorama viewer such as [[panoglview]].<br />
<br />
= Finetune =<br />
<br />
[[hugin]] helps position [[control points]] to within a fraction of a pixel distance automatically:<br />
<br />
* When '''auto fine-tune''' is selected in the [[hugin Control Points tab]] while picking control points.<br />
* When clicking '''Fine-tune''' in the [[hugin Control Points tab]]<br />
* When picking '''Fine-tune all Points''' in the [[hugin Main window]] '''Edit''' menu.<br />
<br />
== Basic settings ==<br />
<br />
* '''Patch width''', the size of the square of pixels taken from the left photo to match with the right photo when picking [[control points]], reduce if this is taking a long time on your system.<br />
* '''Search area width''', the percentage area of the right photo that is searched when picking '''control points''', reduce if this is taking a long time on your system.<br />
* '''Local search area width''', the region of the right photo searched when you click '''Fine-tune''' in the [[hugin Control Points tab]] or '''Fine-tune all Points''' in the [[hugin Main window]] '''Edit''' menu.<br />
* '''Correlation Threshold'''. For each '''Fine-tune''', [[hugin]] calculates the quality of the '''control points''' match, raise this threshold to reject dubious matches.<br />
* '''Peak Curvature Threshold''', Currently unused.<br />
<br />
== Rotation search ==<br />
<br />
Enable this if your photos:<br />
<br />
* have a very wide angle [[Field of View]] or [[fisheye Projection]].<br />
* are tilted up or down, [[control points]] near the [[zenith]] or [[nadir]] may need to have full 360 degree rotation search<br />
<br />
{{clr}}<br />
<br />
= Misc =<br />
<br />
== Resource usage ==<br />
<br />
To speed things up [[hugin]] keeps a copy in memory of as many input photos as possible. With very large projects, this would use all your system memory, so set '''Image cache memory''' to a value below your available free RAM. The default of 200MB should be ok for a system with 512MB of RAM.<br />
<br />
The [[hugin Preview window]] and [[nona]] are multi-threaded so can use more than one CPU/core if required. Set '''Number of CPUs''' to how many CPUs you wish to use when rendering with these tools.<br />
<br />
== User interface ==<br />
<br />
Usually, [[hugin]] will use the current locale to determine the language of buttons, menus etc...<br />
Set the '''Language''' if you need to switch languages temporarily or if you are using a platform<br />
such as Windows95 that doesn't support localised software. hugin won't change language<br />
immediately, you will need to stop and restart it.<br />
<br />
'''Optimize and stitch only images selected in preview window''' allows you to work on just a few<br />
of the images in the current project rather than all of them. Use the buttons along the top of the<br />
[[Hugin Preview window]] to enable and disable source photos. When optimising with the<br />
[[Hugin Optimizer tab]] or stitching with the [[Hugin Stitcher tab]], all the hidden images will be ignored.<br />
<br />
== HDR and 16bit display mode ==<br />
<br />
[[hugin]] supports both [[HDR]] and [[16bit]] imaging. These image formats<br />
contain a lot more brightness and colour information than can be displayed<br />
on a standard computer monitor, so hugin only shows a rough representation<br />
of these pictures.<br />
<br />
16bit data can have ''linear'' or ''corrected'' [[gamma]]. Linear images<br />
appear very dark on many monitors, so set the '''range''' to '''fixed''' and<br />
the '''mapping''' to '''gamma 2.2'''.<br />
<br />
For HDR data, try setting the '''range''' to '''auto''' and the '''mapping'''<br />
to '''logarithmic'''.<br />
<br />
Changes to the '''HDR and 16bit display mode''' require restarting hugin to<br />
take effect.<br />
<br />
== File options ==<br />
<br />
Some [[hugin]] actions generate large temporary files, change the '''Tempdir''' to<br />
specify an alternative location for writing these files. One reason for setting this<br />
independently from the operating system would be to use a RAM disk to speed up<br />
stitching.<br />
<br />
== Preview ==<br />
<br />
'''Show Druid''' adds a box showing tips to the [[hugin Preview window]] (TODO this is disabled in current betas).<br />
<br />
{{clr}}<br />
<br />
= Autopano =<br />
<br />
[[hugin]] uses an external tool for automatically creating [[control points]] for a set of images either when:<br />
<br />
* clicking '''2. Align...''' in the [[hugin Assistant tab]].<br />
* or clicking '''Create control points''' in the [[hugin Images tab]].<br />
<br />
Set the pull down menu to use the default configuration for one of these external tools:<br />
<br />
* [[Autopano]] (by A. Jenny), closed source, available for Linux i386 and Windows 32bit.<br />
* [[autopano-sift|Autopano-SIFT]] (by S. Nowozin), open source, available for Linux, Windows and OS X.<br />
<br />
Parameters for these tools can be customised or even switched to another similar tool (such as [[autopano-sift-C]]) in the remaining section. Typical tweaks might be to:<br />
<br />
* Set ''--noransac'' for [[autopano-sift]] when using non-[[rectilinear Projection]] input images.<br />
* Set ''--size'' for [[autopano-sift]] which by default downsizes images to 700 pixels before matching.<br />
<br />
= Enblend =<br />
<br />
In the final stitching process [[nona]] reprojects and distorts images to fit, [[enblend]] takes these<br />
images as individual [[TIFF]] files and merges them using sophisticated seam positioning and blending into<br />
a single finished TIFF file.<br />
<br />
The '''Use alternative Enblend program''' option allows you to use other tools with a similar interface<br />
such as [[smartblend]] or [[enblend-mask]].<br />
<br />
enblend supports a range of '''Additional arguments''', for example you may want to set:<br />
<br />
* '''-a''' Pre-assemble non-overlapping images to speed up blending.<br />
* '''-l number''' Number of levels to use (1 to 29), larger numbers result in wider seams.<br />
* '''-z''' Use LZW compression. The [[TIFF]] file format has a 2GiB limit (or 4GiB or 8GiB, depending on who you ask) so you will find this useful for large panoramas.<br />
* '''-b kilobytes''' Image cache block size (default=2MiB)<br />
* '''-c''' Use CIECAM02 to blend colors<br />
* '''-m megabytes''' Use this much memory before going to disk (default=1GiB). Increase if you have a lot of memory on your system.<br />
* '''--fine-mask''' Enables detailed mask generation.<br />
* '''--no-optimize''' Turn off mask optimization.<br />
<br />
Often you will want to keep the intermediate [[TIFF]] files created by [[nona]] in order to edit masks or<br />
for manual blending, otherwise '''Delete remapped tiff files''' or your disk will fill up with temporary data.<br />
<br />
[[Cropped TIFF]] files are smaller and more efficient because unused parts of the image are not stored in the file. You should<br />
always '''Use cropped TIFF files''' unless you need to open them in an image editor without [[Cropped TIFF]] support.<br />
<br />
{{clr}}<br />
<br />
__NOTOC__<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Hugin_Exposure_tab&diff=8959Hugin Exposure tab2007-06-20T11:45:05Z<p>Pablo: /* Vignetting Centre */ independent of d&e</p>
<hr />
<div>[[hugin]] has a brightness and colour correction system which is completely<br />
independent of the old [[PTStitcher]] tool. This improved system is only<br />
available with the default [[nona]] stitching tool in the [[hugin Stitcher tab]].<br />
<br />
The '''hugin''' system works by sampling a spread of points for each pair of<br />
overlapping images. The optimiser then tries to model a system of [[camera response curve]],<br />
'''exposure''', '''white balance''' and [[vignetting]] that fits the values of these points.<br />
<br />
So for this to work, the photos in the project have to be already aligned. Align<br />
photos by managing control points in the [[hugin Control Points tab]] and optimising<br />
geometric image parameters in the [[hugin Optimizer tab]].<br />
<br />
== Optimize Preset ==<br />
<br />
Use the '''Optimize Preset''' combo box to pick one of several pre-set photometric<br />
optimisation schemes, then click the '''Optimize now!''' button to calculate the<br />
best available brightness and colour adjustments.<br />
<br />
=== Low dynamic range ===<br />
<br />
This will optimise [[vignetting]], the [[camera response curve]] and '''exposure''' (EV)<br />
for all the photos in your project.<br />
<br />
The exposures for all images (except for the anchor image determined by selecting <br />
'''Anchor this image for exposure''' in the [[hugin Images tab]]) are optimised<br />
(TODO actually the anchor is too when they are linked?).<br />
<br />
=== Low dynamic range, variable white balance ===<br />
<br />
This will optimise [[vignetting]], the [[camera response curve]], '''exposure''' (EV) and<br />
'''white balance''' for all the photos in your project.<br />
<br />
Similarly to above, the exposures and white balance is optimised for all images except the<br />
''anchor''.<br />
<br />
=== High dynamic range, fixed exposure ===<br />
<br />
This will optimise [[vignetting]] and [[camera response curve]] for all photos.<br />
<br />
=== High dynamic range, variable white balance, fixed exposure ===<br />
<br />
This will optimise [[vignetting]], the [[camera response curve]] and '''white balance'''<br />
for all the photos in your project.<br />
<br />
=== Custom parameters below ===<br />
<br />
The pre-set options are good for most situations, but often it is necessary to switch to<br />
'''Custom parameters'''. For example, none of the pre-sets will optimise the<br />
'''Vignetting Centre''', so use custom parameters if your vignetting is off-centre.<br />
<br />
== Image Variables ==<br />
<br />
Image variables are quite likely to vary between photos, perhaps because of minor<br />
variations in shutter speed, changes in natural light or because of 'auto' settings<br />
in the camera itself.<br />
<br />
=== Exposure ===<br />
<br />
The '''Exposure''' section shows the photo number and exposure values for all input<br />
photos (in parenthesis), the check mark indicates parameters that will be optimised.<br />
<br />
When a value is set to ''0'' (zero) this results in [[hugin]] applying no exposure<br />
change to the photo. ''EV'' is a standard photographic scale, each increase or<br />
decrease by one unit will change the exposure by the equivalent of one ''f-stop''<br />
(ie. halving or doubling the exposure).<br />
<br />
=== White balance ===<br />
<br />
Also known as ''colour balance'' or ''colour temperature''.<br />
<br />
The '''White balance''' section shows the photo number and ''red'' and ''blue''<br />
multiplier values (in parenthesis), the check mark indicates photos that<br />
will be optimised. If the values are set to ''(1,1)'', this will result in no<br />
'''white balance''' change (the numbers are relative to the green channel which<br />
stays unaltered).<br />
<br />
== Camera and Lens variables ==<br />
<br />
The '''Camera and Lens variables''' are the ''photometric'' analog of the ''geometric'' [[lens correction model]], [[hugin]]<br />
assumes that all input photos with the same '''lens number''' have identical values unless they are '''unlinked''' in the<br />
[[hugin Camera and Lens tab]].<br />
<br />
=== Vignettting ===<br />
<br />
[[Vignetting]] is dependent mainly on your lens and the ''aperture''. Usually the centre of the image is<br />
brighter with a falloff towards the edges, [[hugin]] can calculate this falloff curve as part of the<br />
''photometric optimisation'' process or you can enter it manually in the [[hugin Camera and Lens tab]]<br />
as the three numbers shown here.<br />
<br />
=== Vignetting Centre ===<br />
<br />
The centre of [[vignetting]] is rarely the exact centre of the photo,<br />
[[hugin]] can optimise this position or you can enter it manually in the<br />
[[hugin Camera and Lens tab]]. The scale is in ''pixels'', with ''0,0''<br />
indicating the centre of the photo. The values are independent of the<br />
d & e parameters, that specify the origin for projection and distortion<br />
values.<br />
<br />
=== Camera Response ===<br />
<br />
[[hugin]] can optimise the [[camera response curve]] by comparing differences<br />
between overlapping images. To do this your photos need to either have<br />
significant [[vignetting]] or have variable exposure. If your photos have <br />
perfectly even exposure and zero vignetting, then you would have to <br />
calibrate the camera response separately and then enter it manually in the<br />
[[hugin Camera and Lens tab]].<br />
<br />
The '''camera response curve''' is used both for mapping the images to a linear<br />
colourspace when creating [[HDR]] output, and for normalising the colourspace<br />
for internal vignetting, brightness and colour corrections when creating<br />
'normal' '''LDR''' output. If your pictures don't require such corrections<br />
then you don't really need a calibrated response curve.<br />
<br />
Hugin uses the [http://www1.cs.columbia.edu/CAVE/projects/rad_cal/rad_cal.php EMoR response model]<br />
from the Computer Vision Lab at Columbia University which simplifies the full<br />
response curve to five empirical coefficient numbers.<br />
<br />
If your brightness variations are caused by lens flare then you may be better not optimising<br />
'''Exposure'' or '''white balance''', instead uncheck '''Link''' for '''Camera Response'''<br />
in the [[hugin Camera and Lens tab]] to optimise a different response curve for each photo.<br />
<br />
__NOTOC__<br />
[[Category:Software:Hugin]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8673Historical:SoC2007 projects2007-03-27T09:02:31Z<p>Pablo: /* Anti-ghosting HDR panorama blending and merging algorithm */</p>
<hr />
<div>See [[SoC 2007 overview]] for usage hints and a page list.<br />
<br />
= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two options are available:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend and enhance the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature detection for panoramic images ==<br />
<br />
Goal: Robust extraction of local image features using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
Tasks:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page'''. <br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Standalone program to extract the matches from images.<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
== Automatic feature matching for panoramic images ==<br />
Goal: Robust and efficient matching of local image features.<br />
<br />
Tasks:<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging use case, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Matching| SoC Feature Matching project]] page'''.<br />
<br />
A desired result of the projects would be:<br />
* Standalone program for the feature matching part, which at the end should accept the features found by the automatic feature detection task. Preliminary studies can be done using the existing SIFT and SURF detector/descriptors.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, Fulvio Senore ?<br />
<br />
Student: [http://wiki.panotools.org/User:Leonox Leon Moctezuma]<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
* [http://research.microsoft.com/IVM/HDR/hdr_sg2003.pdf High Dynamic Range Video]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
== PTButcher ==<br />
<br />
A batch creator-project manager for batch creating projects, optimizing, managing groups of projects, names outputs, indipendently invoke the software parts and feed scripts.<br />
<br />
All the software is based on advanced find-replace in text files, generation of script files, but needs an user-friendly GUI, the main investment in the coding I suppose.<br />
<br />
General<br />
* ability to translate projects between the various gui.<br />
* To search projects in subfolders<br />
* to keep history of all operations, with undos ability.<br />
<br />
batch building projects<br />
* creates projects basing on the subfolder of a main folders, creates CPs and optimizes.<br />
* Default name schemes customizable for result images and projects. As well as project folder-locations<br />
* Template application (selection in base of image number, or exif)<br />
* Customizable CP finder and refinery<br />
* Customizable optimizer<br />
* report with result and-or creation of a little test image<br />
* capable of hugin-ptgui-whatever panorama project format.<br />
<br />
project manager, <br />
you have a table of all your project, with ability to change, one by one or in group, and without opening them<br />
<br />
* relative and absolute paths for images, changing the full path or a part of it, allowing HD migrations even if projects are foldered in creative ways.<br />
* Path for output image<br />
* output image type, resolution, layers.<br />
* Involved software and modificators.<br />
* 16 bit workflow warnings<br />
<br />
Batch stitching<br />
* ability of batch processing stitch operations, or to invoke the specific software and feed its batch<br />
<br />
Ability to stitch panovideos:<br />
Given a template with the (n) of images involved and (n) folders, containing (m) png images <br />
extracted from the (n) streams to stitch together.<br />
Invoke itself the softwares, and cycles the batch to build (m) images in a new folder.<br />
<br />
Support for HDR or ADR workflows, always template based.<br />
i.e.<br />
Given 3 set of 4 fisheye images and the corresponding template, it generates the main project, optimizes images together, and THEN, render 3images (a,b,c) involving images 0,3,6,9 (a) 1,4,7,10) (b) (2,5,8,11) (c)<br />
<br />
See [http://search.cpan.org/dist/Panotools-Script/ Panotools::Script] for a perl approach to this.<br />
Note that the PanoTools script format is is a bit hard to understand, there is a proposal in the<br />
[[SoC2007 project Panotools Architecture]] to replace it with a more workable XML file format, so work should concentrate on the workflow aspects instead of another panotools script parser.<br />
<br />
Proposal: Luca Vascon<br />
<br />
Mentor: needed<br />
<br />
Licence: GPL<br />
<br />
== PtPatcher, module for Interactive panoramic viewer ==<br />
Was: PTeditor2.<br />
<br />
The basic need would be to have it integrated in photoshop and Gimp, with a simple “paint on this side” interface. 16Bit workflow needed, as multiple input-output filetype.<br />
See also skypaint for inspiration interface and capabilities.<br />
<br />
There is a lot of overlap here with [[SoC2007_projects#Interactive_panoramic_viewer|SoC2007 Interactive Panorama Viewer]]. Note<br />
that the viewer simply needs to fork and pass the current filename, pitch, yaw and Field of View to an external script which can handle<br />
the extraction, editing and reinsertion - The viewer itself doesn't need to be involved with any image processing.<br />
<br />
: - If this should be a photoshop plugin it would be a possibility to interact with the Adjust (or PTAdjust) plugin, which can do the extraction and insertion within photoshop (might be possible for the Gimp, too. See [[Panorama Tools Plugins#Adjust]] for details.<small>--[[User:Erik Krause|Erik Krause]] 23:55, 23 March 2007 (CET)</small><br />
<br />
The viewer should allow to save a fileproject in order to allow:<br />
* unlimited close and reopen of the viewer<br />
* multiple interventions and extractions with only one final reinsertion, in order not to loose quality<br />
* working in parallel with multiple images <br />
* batchable alone or with PTButcher, in order to extraxct all nadirs and/or zeniths, with given view angle 'XxY' of panos in a folder and then reinsert them all.<br />
<br />
Proposal: Luca Vascon<br />
<br />
Mentor: <br />
<br />
Do we incorporate this with the viewer?<br />
<br />
Licence: GPL<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8489Historical:SoC2007 projects2007-03-23T08:10:55Z<p>Pablo: panotools skripts are not hard to parse by software (if done right)</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature detection for panoramic images ==<br />
<br />
Goal: Robust extraction of local image features using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
Tasks:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page'''. <br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Standalone program to extract the matches from images.<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
== Automatic feature matching for panoramic images ==<br />
Goal: Robust and efficient matching of local image features.<br />
<br />
Tasks:<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging use case, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Matching| SoC Feature Matching project]] page'''.<br />
<br />
A desired result of the projects would be:<br />
* Standalone program for the feature matching part, which at the end should accept the features found by the automatic feature detection task. Preliminary studies can be done using the existing SIFT and SURF detector/descriptors.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, Fulvio Senore ?<br />
<br />
Student: [http://wiki.panotools.org/User:Leonox Leon Moctezuma]<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
== PTButcher ==<br />
<br />
A batch creator-project manager for batch creating projects, optimizing, managing groups of projects, names outputs, indipendently invoke the software parts and feed scripts.<br />
<br />
All the software is based on advanced find-replace in text files, generation of script files, but needs an user-friendly GUI, the main investment in the coding I suppose.<br />
<br />
General<br />
* ability to translate projects between the various gui.<br />
* To search projects in subfolders<br />
* to keep history of all operations, with undos ability.<br />
<br />
batch building projects<br />
* creates projects basing on the subfolder of a main folders, creates CPs and optimizes.<br />
* Default name schemes customizable for result images and projects. As well as project folder-locations<br />
* Template application (selection in base of image number, or exif)<br />
* Customizable CP finder and refinery<br />
* Customizable optimizer<br />
* report with result and-or creation of a little test image<br />
* capable of hugin-ptgui-whatever panorama project format.<br />
<br />
project manager, <br />
you have a table of all your project, with ability to change, one by one or in group, and without opening them<br />
<br />
* relative and absolute paths for images, changing the full path or a part of it, allowing HD migrations even if projects are foldered in creative ways.<br />
* Path for output image<br />
* output image type, resolution, layers.<br />
* Involved software and modificators.<br />
* 16 bit workflow warnings<br />
<br />
Batch stitching<br />
* ability of batch processing stitch operations, or to invoke the specific software and feed its batch<br />
<br />
Ability to stitch panovideos:<br />
Given a template with the (n) of images involved and (n) folders, containing (m) png images <br />
extracted from the (n) streams to stitch together.<br />
Invoke itself the softwares, and cycles the batch to build (m) images in a new folder.<br />
<br />
Support for HDR or ADR workflows, always template based.<br />
i.e.<br />
Given 3 set of 4 fisheye images and the corresponding template, it generates the main project, optimizes images together, and THEN, render 3images (a,b,c) involving images 0,3,6,9 (a) 1,4,7,10) (b) (2,5,8,11) (c)<br />
<br />
See [http://search.cpan.org/dist/Panotools-Script/ Panotools::Script] for a perl approach to this.<br />
Note that the PanoTools script format is is a bit hard to understand, there is a proposal in the<br />
[[SoC2007 project Panotools Architecture]] to replace it with a more workable XML file format, so work should concentrate on the workflow aspects instead of another panotools script parser.<br />
<br />
Proposal: Luca Vascon<br />
<br />
Mentor: needed<br />
<br />
Licence: GPL<br />
<br />
== Pteditor2 ==<br />
The basic need would be to have it integrated in photoshop and Gimp, with a simple “paint on this side” interface. 16Bit workflow needed, as multiple input-output filetype.<br />
See also skypaint for inspiration interface and capabilities.<br />
<br />
There is a lot of overlap here with [[SoC2007_projects#Interactive_panoramic_viewer|SoC2007 Interactive Panorama Viewer]]. Note<br />
that the viewer simply needs to fork and pass the current filename, pitch, yaw and Field of View to an external script which can handle<br />
the extraction, editing and reinsertion - The viewer itself doesn't need to be involved with any image processing.<br />
<br />
Proposal: Luca Vascon<br />
<br />
Mentor: needed<br />
<br />
Licence: GPL<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8257Historical:SoC2007 projects2007-03-20T06:29:27Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature detection for panoramic images ==<br />
<br />
Goal: Robust extraction of local image features using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
Tasks:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page'''. <br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Standalone program to extract the matches from images.<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
== Automatic feature matching for panoramic images ==<br />
Goal: Robust and efficient matching of local image features.<br />
<br />
Tasks:<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging use case, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
A desired result of the projects would be:<br />
* Standalone program for the feature matching part, which at the end should accept the features found by the automatic feature detection task. Preliminary studies can be done using the existing SIFT and SURF detector/descriptors.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8256Historical:SoC2007 projects2007-03-20T06:29:05Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature detection for panoramic images ==<br />
<br />
Goal: Robust extraction of local image features using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
Tasks:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page'''. <br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Standalone program to extract the matches from images.<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
== Automatic feature matching for panoramic images ==<br />
Goal: Robust and efficient matching of local image features.<br />
<br />
Tasks:<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging use case, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
A desired result of the projects would be:<br />
* Standalone program for the feature matching part, which at the end should accept the features found by the automatic feature detection task. Preliminary studies can be done using the existing SIFT and SURF detector/descriptors.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8255Historical:SoC2007 projects2007-03-20T06:28:24Z<p>Pablo: split the feature matching projects into two subprojects.</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature detection for panoramic images ==<br />
<br />
Goal: Robust extraction of local image features using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
Tasks:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
'''Further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page'''. <br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Standalone program to extract the matches from images.<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
== Automatic feature matching for panoramic images ==<br />
Goal: Robust and efficient matching of local image features.<br />
<br />
Tasks:<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging use case, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
A desired result of the projects would be:<br />
* Standalone program for the feature matching part, which at the end should accept the features found by the automatic feature detection task.<br />
Preliminary studies can be done using the existing SIFT and SURF detector/descriptors.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
* [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8254Historical:SoC2007 projects2007-03-20T06:03:10Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
# Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
#* '''Details to be discussed on [[SoC_2007_project_New_GUI_Framework|the separate page]]'''.<br />
# Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation, further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page. <br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees. For the panoramic imaging usecase, several heuristics could be used to improve the matching behaviour, including using the EXIF timestamps, or previously known approximate orientation of the images.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
* [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
'''Details to be discussed on [[SoC2007_project_Panotools_Architecture|the separate page]]'''.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL<br />
<br />
[[Category:Community:Project]]</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8045Historical:SoC2007 projects2007-03-16T10:30:00Z<p>Pablo: moved feature descriptor project to seperate page</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation, further details are being discussed in the separate [[SoC2007_project_Feature_Descriptor]] page. <br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library for the matching step.<br />
* Integration into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
* [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8044Historical:SoC2007 projects2007-03-16T10:27:06Z<p>Pablo: /* Development style */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([[nona]], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching]<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
* [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL<br />
<br />
<br />
== Architectural Overhaul of Panotools ==<br />
<br />
Panotools is a very monolithic application. The goal of this project is to refactor the functionality of panotools into 4 main parts, as independent of each other as possible.<br />
These parts are (at least):<br />
<br />
* Calculation of position of images (optimization)<br />
* Mapping from input images to output images<br />
* Projection related computations<br />
* Parsing of input scripts/Generation of input scripts<br />
<br />
Were this project successful the functionality of panotools will be available as a collection of routines that be called directly (as opposed to the current model that requires<br />
the creation and parsing of a script). It will make it easier to replace one component of panotools with another one; and it will improve the future maintenance of panotools.<br />
<br />
A desired result of the projects would be:<br />
* Set of functions/classes that are available to hugin to perform optimization and remapping of images<br />
* Test suite to verify that the functionality before and after is equivalent.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* Knowledge of Numerical methods<br />
* Basic knowledge of image processing<br />
<br />
Mentor: D.M. German<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_project_Feature_Descriptor&diff=8043Historical:SoC2007 project Feature Descriptor2007-03-16T10:07:22Z<p>Pablo: /* Literature */</p>
<hr />
<div>= Robust local feature detector and descriptor =<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
== Deliverables ==<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* An executable for extracting features from image file.<br />
* Test suite to evaluate descriptor on a large amount of images.<br />
* Integration of the library into [[hugin]]<br />
<br />
== Timeline ==<br />
<br />
== Required/available ressources ==<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
== Ressources ==<br />
=== Literature ===<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching<br />
<br />
=== Software ===<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: LGPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_project_Feature_Descriptor&diff=8042Historical:SoC2007 project Feature Descriptor2007-03-16T10:06:26Z<p>Pablo: changed license to LGPL</p>
<hr />
<div>= Robust local feature detector and descriptor =<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
== Deliverables ==<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* An executable for extracting features from image file.<br />
* Test suite to evaluate descriptor on a large amount of images.<br />
* Integration of the library into [[hugin]]<br />
<br />
== Timeline ==<br />
<br />
== Required/available ressources ==<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
== Ressources ==<br />
=== Literature ===<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching]<br />
<br />
=== Software ===<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: LGPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_project_Feature_Descriptor&diff=8040Historical:SoC2007 project Feature Descriptor2007-03-16T08:46:07Z<p>Pablo: /* Robust local feature detector and descriptor */</p>
<hr />
<div>= Robust local feature detector and descriptor =<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
== Deliverables ==<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* An executable for extracting features from image file.<br />
* Test suite to evaluate descriptor on a large amount of images.<br />
* Integration of the library into [[hugin]]<br />
<br />
== Timeline ==<br />
<br />
== Required/available ressources ==<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
== Ressources ==<br />
=== Literature ===<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching]<br />
<br />
=== Software ===<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_project_Feature_Descriptor&diff=8039Historical:SoC2007 project Feature Descriptor2007-03-16T08:43:48Z<p>Pablo: initial version for further expansion and discussion</p>
<hr />
<div>= Robust local feature detector and descriptor =<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
<br />
== Deliverables ==<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
== Timeline ==<br />
<br />
== Required/available ressources ==<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
== Ressources ==<br />
=== Literature ===<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching]<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
=== Software and libraries ===<br />
<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8037Historical:SoC2007 projects2007-03-16T00:04:14Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Literature about feature detection<br />
* [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT], contains several good references<br />
* [http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]<br />
* [http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes] on feature detection/matching]<br />
* Framework for [http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]<br />
<br />
Possibly useful resources and libraries:<br />
* [http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]<br />
* [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8013Historical:SoC2007 projects2007-03-15T21:08:20Z<p>Pablo: added more references</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Literature about feature detection<br />
* [[http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT]], contains several good references<br />
* [[http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]]<br />
* [[http://www.mis.informatik.tu-darmstadt.de/Education/Courses/cv/index.html Lecture notes]] on feature detection/matching]]<br />
* Framework for [[http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]]<br />
<br />
Possibly useful resources and libraries:<br />
* [[http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]]<br />
* [[http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=8012Historical:SoC2007 projects2007-03-15T20:36:53Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a suitable descriptor.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wide angle images are used. <br />
<br />
This project should be split into two projects, which could be done by separate students:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation.<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps.<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
* Matlab or octave<br />
<br />
Literature about feature detection<br />
* [[http://en.wikipedia.org/wiki/Scale-invariant_feature_transform Wikipedia article on SIFT]], contains several good references<br />
* [[http://homes.esat.kuleuven.be/%7Etuytelaa/ECCV06tutorial.html Tutorial on local invariant features]]<br />
* Framework for [[http://www.robots.ox.ac.uk/~vgg/research/affine/ testing descriptors]]<br />
<br />
Possibly useful resources and libraries:<br />
* [[http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]]<br />
* [[http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL</div>Pablohttps://wiki.panotools.org/index.php?title=Historical:SoC2007_projects&diff=7994Historical:SoC2007 projects2007-03-12T14:57:39Z<p>Pablo: /* Automatic feature matching for panoramic images */</p>
<hr />
<div>= Introduction =<br />
<br />
This is the work in progress list of possible projects for the [[Google_SoC_2007]]<br />
<br />
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.<br />
There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.<br />
<br />
Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.<br />
<br />
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].<br />
<br />
= Development style =<br />
<br />
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], [[fulla]]).<br />
<br />
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).<br />
<br />
= Possible Projects =<br />
<br />
== Intuitive yet powerful GUI for panorama creation ==<br />
<br />
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:<br />
<br />
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.<br />
<br />
2. Extend the existing wxWidgets based GUI.<br />
<br />
General goals for the improved GUI include:<br />
<br />
* Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.<br />
* Enhancing and integrating manual and automated control point placement and management.<br />
* Improving lens parameter management.<br />
* Providing a batch processing interface.<br />
* Expert mode with access to all features and internals.<br />
<br />
Recommended knowledge or interest in:<br />
* Workflow analysis and UI design skills<br />
* Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT<br />
* Creative use of panoramic imaging<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Automatic feature matching for panoramic images ==<br />
<br />
Goal: Robust matching of features between multiple images using a Hessian-based detector and a gradient-based descriptor. There are general feature detectors such as SIFT and SURF, which are tailored for automatic 3D reconstruction and large viewpoint changes. However, this generality is not needed for panoramic imaging, where the images usually have the same scale and viewpoint.<br />
A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wideangle images are used. <br />
<br />
This project can be split into two sub-projects:<br />
* Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation. For the first test, a simple Harris corner detector could be combined with an gradient-based descriptor. For this existing code can be reused. After that, the known lens distortion could be integrated into the descriptor.<br />
* Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.<br />
<br />
A desired result of the projects would be:<br />
* C or C++ library that implements the detection and description steps<br />
* C or C++ library for the matching step.<br />
* Integration of both libraries into [[hugin]] and a standalone executable similar to [[Autopano-sift]] or [[Autopano]]<br />
<br />
Required knowledge or interest in:<br />
* signal or image processing background<br />
* C or C++ development skills.<br />
<br />
Possibly useful resources and libraries:<br />
* [[http://hunch.net/~jl/projects/cover_tree/cover_tree.html Fast nearest neighbour matching using cover trees]]<br />
* [[http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA computer vision library]]<br />
<br />
Mentor: Pablo d'Angelo, Herbert Bay, ?<br />
<br />
License: GPL<br />
<br />
== Interactive panoramic viewer ==<br />
<br />
Goal: The [[Freepv]] panoramic viewer aims to provide a superior viewing experience<br />
for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on<br />
exploiting powerful graphics hardware using OpenGL. Currently it provides<br />
basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:<br />
<br />
* Support for hotspots<br />
* Optimisation for panoramas larger than the Video RAM<br />
* Display of high dynamic range panoramas with adaptive exposure<br />
* Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).<br />
* Fallback software renderer<br />
<br />
Required knowledge or interest in:<br />
* OpenGL or other 3D programming experience.<br />
* Creating cool and nice looking interactive experiences.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: LGPL<br />
<br />
== Anti-ghosting HDR panorama blending and merging algorithm ==<br />
<br />
Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations. <br />
<br />
Interesting research papers:<br />
* [http://www.cs.berkeley.edu/~eden/737_eden_a.pdf Seamless Image Stitching of Scenes with Large Motions and Exposure Differences]<br />
* [http://graphics.cs.ucf.edu/ekhan/project_ghost.htm Ghost Removal in High Dynamic Range Images]<br />
<br />
Required knowledge or interest in:<br />
* Strong background signal/image processing<br />
* Creative mind with ideas beyond the state of the art in computer vision/graphics research.<br />
<br />
Mentor: Pablo d'Angelo, ?<br />
<br />
License: GPL<br />
<br />
== Processing of very large images ==<br />
<br />
Goal: Allow the creation of arbitrary large panoramas.<br />
[http://flickr.com/groups/83823859@N00/discuss/72157594574253488/]<br />
<br />
Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. [http://www.vips.ecs.soton.ac.uk/ VIPS] is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.<br />
<br />
A desired result of the projects would be:<br />
* VIPS operations that support the geometric and photometric (vignetting correction) transformations.<br />
* Standalone command line program that remaps images using these routines.<br />
* Program/script to convert panotools scripts to nip2 projects.<br />
<br />
Required knowledge or interest in:<br />
* C/C++ programming<br />
* image processing<br />
<br />
Mentor: John Cupitt, Pablo d'Angelo<br />
<br />
License: GPL</div>Pablo