From a8c0365866beb56b5a13abc917f8d19e3c1d2f19 Mon Sep 17 00:00:00 2001 From: Yifeng Zhu Date: Mon, 23 Oct 2023 15:24:02 -0500 Subject: [PATCH] Update website for correspondence visualization --- docs/_layouts/home.html | 4 +- docs/static/css/index.css | 2 +- docs/static/images/new_image.jpg | Bin 0 -> 28971 bytes docs/static/images/ref_mask.json | 1 + docs/static/images/reference_image.jpg | Bin 0 -> 19417 bytes docs/static/js/index.js | 104 +++++++------------------ 6 files changed, 33 insertions(+), 78 deletions(-) create mode 100644 docs/static/images/new_image.jpg create mode 100644 docs/static/images/ref_mask.json create mode 100644 docs/static/images/reference_image.jpg diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html index b583cd4..d06da46 100644 --- a/docs/_layouts/home.html +++ b/docs/_layouts/home.html @@ -91,7 +91,7 @@

GROOT: Learning Generalizable Manipulat frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>
- 1-min spotlight video. Better view with audio or turn on captions. + 1-min spotlight video. Turn on audio or the caption to learn about the narrative.
@@ -261,7 +261,7 @@

SAM result

- +
diff --git a/docs/static/css/index.css b/docs/static/css/index.css index 34e6dd0..f20a2cc 100644 --- a/docs/static/css/index.css +++ b/docs/static/css/index.css @@ -220,7 +220,7 @@ hr width: 480px; height: 480px; } -#mask-canvas, #image-canvas { +#mask-canvas, #image-canvas, #dino-image-canvas, #dino-mask-canvas{ position: absolute; top: 0; left: 0; diff --git a/docs/static/images/new_image.jpg b/docs/static/images/new_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f26b1391f4ddef003888e7309b168f2ccf4ad41c GIT binary patch literal 28971 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 { - // console.log(state); - // }); - // } - - // // Access to bulmaCarousel instance of an element - // var element = document.querySelector('#my-element'); - // if (element && element.bulmaCarousel) { - // // bulmaCarousel instance is available as element.bulmaCarousel - // element.bulmaCarousel.on('before-show', function(state) { - // console.log(state); - // }); - // } - - /*var player = document.getElementById('interpolation-video'); - player.addEventListener('loadedmetadata', function() { - $('#interpolation-slider').on('input', function(event) { - console.log(this.value, player.duration); - player.currentTime = player.duration / 100 * this.value; - }) - }, false);*/ - // preloadInterpolationImages(); - - // $('#interpolation-slider').on('input', function(event) { - // setInterpolationImage(this.value); - // }); - // setInterpolationImage(0); - // $('#interpolation-slider').prop('max', NUM_INTERP_FRAMES - 1); - - // bulmaSlider.attach(); - - - - // var trace1 = { - // x: [1, 2, 3, 4, 5], - // y: [1, 6, 3, 6, 8], - // mode: 'markers', - // type: 'scatter', - // name: 'Sample Data', - // marker: { - // color: 'rgb(156, 165, 196)', - // size: 12 - // } - // }; - - // var data = [trace1]; - - // var layout = { - // title: 'Simple Scatter Plot with Plotly', - // xaxis: { - // title: 'X-axis Label' - // }, - // yaxis: { - // title: 'Y-axis Label' - // } - // }; + let davisPalette = ['#000000', '#800000', '#008000', '#808000', '#000080', '#800080', '#008080', '#808080', '#400000', '#C00000', '#408000', '#C08000', '#400080', '#C00080', '#408080', '#C08080', '#004000', '#804000', '#00C000', '#80C000', '#004080', '#804080', '#00C080', '#80C080', '#404000', '#C04000', '#40C000', '#C0C000', '#404080', '#C04080', '#40C080', '#C0C080', '#000040', '#800040', '#008040', '#808040', '#0000C0', '#8000C0', '#0080C0', '#8080C0', '#400040', '#C00040', '#408040', '#C08040', '#4000C0', '#C000C0', '#4080C0', '#C080C0', '#004040', '#804040', '#00C040', '#80C040', '#0040C0', '#8040C0', '#00C0C0', '#80C0C0', '#404040', '#C04040', '#40C040', '#C0C040', '#4040C0', '#C040C0', '#40C0C0', '#C0C0C0', '#200000', '#A00000', '#208000', '#A08000', '#200080', '#A00080', '#208080', '#A08080', '#600000', '#E00000', '#608000', '#E08000', '#600080', '#E00080', '#608080', '#E08080', '#204000', '#A04000', '#20C000', '#A0C000', '#204080', '#A04080', '#20C080', '#A0C080', '#604000', '#E04000', '#60C000', '#E0C000', '#604080', '#E04080', '#60C080', '#E0C080', '#200040', '#A00040', '#208040', '#A08040', '#2000C0', '#A000C0', '#2080C0', '#A080C0', '#600040', '#E00040', '#608040', '#E08040', '#6000C0', '#E000C0', '#6080C0', '#E080C0', '#204040', '#A04040', '#20C040', '#A0C040', '#2040C0', '#A040C0', '#20C0C0', '#A0C0C0', '#604040', '#E04040', '#60C040', '#E0C040', '#6040C0', '#E040C0', '#60C0C0', '#E0C0C0', '#002000', '#802000', '#00A000', '#80A000', '#002080', '#802080', '#00A080', '#80A080', '#402000', '#C02000', '#40A000', '#C0A000', '#402080', '#C02080', '#40A080', '#C0A080', '#006000', '#806000', '#00E000', '#80E000', '#006080', '#806080', '#00E080', '#80E080', '#406000', '#C06000', '#40E000', '#C0E000', '#406080', '#C06080', '#40E080', '#C0E080', '#002040', '#802040', '#00A040', '#80A040', '#0020C0', '#8020C0', '#00A0C0', '#80A0C0', '#402040', '#C02040', '#40A040', '#C0A040', '#4020C0', '#C020C0', '#40A0C0', '#C0A0C0', '#006040', '#806040', '#00E040', '#80E040', '#0060C0', '#8060C0', '#00E0C0', '#80E0C0', '#406040', '#C06040', '#40E040', '#C0E040', '#4060C0', '#C060C0', '#40E0C0', '#C0E0C0', '#202000', '#A02000', '#20A000', '#A0A000', '#202080', '#A02080', '#20A080', '#A0A080', '#602000', '#E02000', '#60A000', '#E0A000', '#602080', '#E02080', '#60A080', '#E0A080', '#206000', '#A06000', '#20E000', '#A0E000', '#206080', '#A06080', '#20E080', '#A0E080', '#606000', '#E06000', '#60E000', '#E0E000', '#606080', '#E06080', '#60E080', '#E0E080', '#202040', '#A02040', '#20A040', '#A0A040', '#2020C0', '#A020C0', '#20A0C0', '#A0A0C0', '#602040', '#E02040', '#60A040', '#E0A040', '#6020C0', '#E020C0', '#60A0C0', '#E0A0C0', '#206040', '#A06040', '#20E040', '#A0E040', '#2060C0', '#A060C0', '#20E0C0', '#A0E0C0', '#606040', '#E06040', '#60E040', '#E0E040', '#6060C0', '#E060C0', '#60E0C0', '#E0E0C0']; + + // Plotly.newPlot('plotly-sam', data, layout); - $.getJSON("static/images/mask.json", function(data) { + $.getJSON("static/images/ref_mask.json", function(data) { mask = data; - drawImage(mask); + drawImage(maskCtx, mask); + }); + + $.getJSON("static/images/new_mask.json", function(data) { + new_mask = data; + console.log(new_mask) + drawImage(dino_maskCtx, new_mask); }); // This assumes you have an image in the same directory as your HTML file named "your_image.png" var img = new Image(); - img.src = './static/images/example_image.jpg'; + var target_img = new Image(); + + img.src = './static/images/reference_image.jpg'; + target_img.src = './static/images/new_image.jpg'; const imageCanvas = document.getElementById('image-canvas'); const imageCtx = imageCanvas.getContext('2d'); const mask_canvas = document.getElementById('mask-canvas'); @@ -116,12 +66,15 @@ $(document).ready(function() { const dino_imageCanvas = document.getElementById('dino-image-canvas'); const dino_imageCtx = dino_imageCanvas.getContext('2d'); + const dino_mask_canvas = document.getElementById('dino-mask-canvas'); + const dino_maskCtx = dino_mask_canvas.getContext('2d'); + img.onload = function() { var canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; imageCtx.drawImage(img, 0, 0, img.width, img.height); - dino_imageCtx.drawImage(img, 0, 0, img.width, img.height); + dino_imageCtx.drawImage(target_img, 0, 0, target_img.width, target_img.height); var imageData = imageCtx.getImageData(0, 0, canvas.width, canvas.height).data; }; @@ -133,11 +86,11 @@ $(document).ready(function() { // console.log(x, y); const hoveredObject = mask[y][x]; - drawImage(mask, hoveredObject); - }); - - let davisPalette = ['#000000', '#800000', '#008000', '#808000', '#000080', '#800080', '#008080', '#808080', '#400000', '#C00000', '#408000', '#C08000', '#400080', '#C00080', '#408080', '#C08080', '#004000', '#804000', '#00C000', '#80C000', '#004080', '#804080', '#00C080', '#80C080', '#404000', '#C04000', '#40C000', '#C0C000', '#404080', '#C04080', '#40C080', '#C0C080', '#000040', '#800040', '#008040', '#808040', '#0000C0', '#8000C0', '#0080C0', '#8080C0', '#400040', '#C00040', '#408040', '#C08040', '#4000C0', '#C000C0', '#4080C0', '#C080C0', '#004040', '#804040', '#00C040', '#80C040', '#0040C0', '#8040C0', '#00C0C0', '#80C0C0', '#404040', '#C04040', '#40C040', '#C0C040', '#4040C0', '#C040C0', '#40C0C0', '#C0C0C0', '#200000', '#A00000', '#208000', '#A08000', '#200080', '#A00080', '#208080', '#A08080', '#600000', '#E00000', '#608000', '#E08000', '#600080', '#E00080', '#608080', '#E08080', '#204000', '#A04000', '#20C000', '#A0C000', '#204080', '#A04080', '#20C080', '#A0C080', '#604000', '#E04000', '#60C000', '#E0C000', '#604080', '#E04080', '#60C080', '#E0C080', '#200040', '#A00040', '#208040', '#A08040', '#2000C0', '#A000C0', '#2080C0', '#A080C0', '#600040', '#E00040', '#608040', '#E08040', '#6000C0', '#E000C0', '#6080C0', '#E080C0', '#204040', '#A04040', '#20C040', '#A0C040', '#2040C0', '#A040C0', '#20C0C0', '#A0C0C0', '#604040', '#E04040', '#60C040', '#E0C040', '#6040C0', '#E040C0', '#60C0C0', '#E0C0C0', '#002000', '#802000', '#00A000', '#80A000', '#002080', '#802080', '#00A080', '#80A080', '#402000', '#C02000', '#40A000', '#C0A000', '#402080', '#C02080', '#40A080', '#C0A080', '#006000', '#806000', '#00E000', '#80E000', '#006080', '#806080', '#00E080', '#80E080', '#406000', '#C06000', '#40E000', '#C0E000', '#406080', '#C06080', '#40E080', '#C0E080', '#002040', '#802040', '#00A040', '#80A040', '#0020C0', '#8020C0', '#00A0C0', '#80A0C0', '#402040', '#C02040', '#40A040', '#C0A040', '#4020C0', '#C020C0', '#40A0C0', '#C0A0C0', '#006040', '#806040', '#00E040', '#80E040', '#0060C0', '#8060C0', '#00E0C0', '#80E0C0', '#406040', '#C06040', '#40E040', '#C0E040', '#4060C0', '#C060C0', '#40E0C0', '#C0E0C0', '#202000', '#A02000', '#20A000', '#A0A000', '#202080', '#A02080', '#20A080', '#A0A080', '#602000', '#E02000', '#60A000', '#E0A000', '#602080', '#E02080', '#60A080', '#E0A080', '#206000', '#A06000', '#20E000', '#A0E000', '#206080', '#A06080', '#20E080', '#A0E080', '#606000', '#E06000', '#60E000', '#E0E000', '#606080', '#E06080', '#60E080', '#E0E080', '#202040', '#A02040', '#20A040', '#A0A040', '#2020C0', '#A020C0', '#20A0C0', '#A0A0C0', '#602040', '#E02040', '#60A040', '#E0A040', '#6020C0', '#E020C0', '#60A0C0', '#E0A0C0', '#206040', '#A06040', '#20E040', '#A0E040', '#2060C0', '#A060C0', '#20E0C0', '#A0E0C0', '#606040', '#E06040', '#60E040', '#E0E040', '#6060C0', '#E060C0', '#60E0C0', '#E0E0C0']; + drawImage(maskCtx, mask, hoveredObject); + const newHoverObject = new_mask[y][x]; + drawImage(dino_maskCtx, new_mask, newHoverObject); + }); function hexToRgb(hex) { // Remove the hash symbol if it exists @@ -168,8 +121,8 @@ $(document).ready(function() { return hexToRgb(palette[colorIndex]); } - function drawImage(mask, highlightedObject) { - const imgData = maskCtx.createImageData(mask_canvas.width, mask_canvas.height); + function drawImage(targetCtx, maskImage, highlightedObject) { + const imgData = targetCtx.createImageData(mask_canvas.width, mask_canvas.height); const len = imgData.data.length; // print mask shape to console // console.log(mask.length, mask[0].length); @@ -177,11 +130,12 @@ $(document).ready(function() { // console.log(mask[300][0]); let color = getColorForNumber(highlightedObject, davisPalette); + // console.log(targetCtx, highlightedObject); // console.log(color); for (let i = 0; i < len; i += 4) { const x = (i / 4) % mask_canvas.width; const y = Math.floor(i / 4 / mask_canvas.width); - const object = mask[y][x]; + const object = maskImage[y][x]; if (object === highlightedObject) { imgData.data[i] = color[0]; // red imgData.data[i + 1] = color[1]; @@ -194,7 +148,7 @@ $(document).ready(function() { imgData.data[i + 3] = 50; // partial opacity } } - maskCtx.putImageData(imgData, 0, 0); + targetCtx.putImageData(imgData, 0, 0); } // Real Robot Bar Chart @@ -256,7 +210,7 @@ $(document).ready(function() { showarrow: false, xaxis: { tickfont: { - size: 24, + size: 20, family: 'Arial', color: 'black', weight: 'bold'