автозамена zscalesize в intens. graph? для Pict indicator
Добавлено: 08 ноя 2015, 05:17
Здравствуйте,
Решаю такую задачу:
Хочу в LabVIEW сделать масштабируемый Picture Indicator с цветной палитрой, соответствующей jet colormap в MATLAB, да такой, чтобы слева выводилась легенда значений по оси z (ColorRange), и чтобы на этой легенде правильно отображались значения также для нецелочисленных массивов. Масштабируемый - значит что размер индикатора автоматом подстраивается под картинки с разным разрешением (256х256, 512х512)
Вроде бы почти все сделал (криво и через одно место вероятно, но как уж сумел): рядом с Picture выводится индикатор Intensity graph, для ColorRange. Через Property Node размеры Picture и Intensity graph синхронизуются, а вот сделать, чтобы ось значений z для Intensiy graph также изменяла свой размер при увеличении разрешения, мне не удается. Загвоздка в том, что для частей элементов управления, состоящих из нескольких блоков (цифры значений по оси z, метки промежуточных делений...) Property node нельзя переключить с Read на Write.
http://digital.ni.com/public.nsf/allkb/ ... FC00041D0A
Но и по отдельности их размеры никак автоматически не удается изменять - таких свойств просто нет в Property Node. (тут поправка - у меня стоит Lаbview версии 8.5. Может потом эта опция и была проработана лучше?, но хочется сделать именно для 8.5)
Помогите пожалуйста разобраться! Тут всплывает сразу несколько вопросов:
1. Помогите победить именно этот способ задания Picture Indicator'а с цветной палитрой, и легендой. Т.е. я хочу понять, что именно я не понимаю в тонкостях использования Property Node.
Код прикладываю:
http://www.my-files.ru/ks1cca
В архиве папка с подпрограммами, запустите пожалуйста Non-Uniform illumination.vi, сгенерируйте картинки запустив программу, а потом через блок диаграмму откройте "Create Color-jet Image (SubVI)". Проблема именно в нем. Если в Non-Uniform illumination менять N, т.е. разрешение картинки, то сами картинки масштабируются, а вот цифры в ColorRange-Intensity graph размера не меняют. (Там еще и Intensity graph в под-приборе верхнего уровня размера не меняет пока-что, но в самом Create Color-jet Image (SubVI) - размер легенды меняется).
Хочу сделать именно через Pictrue indicator, т.к. есть необходимость сохранять картинку в файл для дальнейшей обработки.
2. Раз уж решил задать вопрос, воспользуюсь случаем, и спрошу еще: может кто знает, как сделать такой индикатор каким-то другим способом?
Я знаю про возможности Vision, но не хочу с ним связываться, т.к. чтобы запустить скомпилированную exe-программу написанную с использованием Vision'овхсих библиотек каждому пользователю придется покупать Vision Run-Time Engine за 500 баксов чтоли (давно я это узнавал, может ситуация и изменилась, но в любом случае, хочется обойтись без Vision)
Мне конкретно в моем Picture индикаторе не нравится еще следующее: чтобы картинка изменяла свой масштаб в главной программе (например, в Non-Uniform illumination.vi), приходится еще выносить reference из подприбора. Это занимает много места на блок-диаграмме главного подприбора. Я вообще хочу закинуть этот индикатор в user.lib и использовать как пользовательский индикатор для картинок, чтобы был всегда под рукой. Но пока что не разобрался, как (и вообще можно ли?) сделать свой control, который бы функционально состоял не на основе какого-то существующего ctrl, а включал в себя сразу элементы 2 ctrl. (как в этом примере - картинка от Image indicator, а шкала z от intensity graph)
3. Наверняка есть более простой вариант с Intensity graph. Но мне он как то с самого начала не полюбился, картинка не квадратная, изображение как-то не всегда корректно отображается, палитра скачет.. В общем, накидайте своих примеров, нестандартных Intensity graph'ов пожалуйста, если таковые имеются.
И последнее: сохраните свои примеры для Labview версии 8.5!
Заранее спасибо!
Решаю такую задачу:
Хочу в LabVIEW сделать масштабируемый Picture Indicator с цветной палитрой, соответствующей jet colormap в MATLAB, да такой, чтобы слева выводилась легенда значений по оси z (ColorRange), и чтобы на этой легенде правильно отображались значения также для нецелочисленных массивов. Масштабируемый - значит что размер индикатора автоматом подстраивается под картинки с разным разрешением (256х256, 512х512)
Вроде бы почти все сделал (криво и через одно место вероятно, но как уж сумел): рядом с Picture выводится индикатор Intensity graph, для ColorRange. Через Property Node размеры Picture и Intensity graph синхронизуются, а вот сделать, чтобы ось значений z для Intensiy graph также изменяла свой размер при увеличении разрешения, мне не удается. Загвоздка в том, что для частей элементов управления, состоящих из нескольких блоков (цифры значений по оси z, метки промежуточных делений...) Property node нельзя переключить с Read на Write.
http://digital.ni.com/public.nsf/allkb/ ... FC00041D0A
Но и по отдельности их размеры никак автоматически не удается изменять - таких свойств просто нет в Property Node. (тут поправка - у меня стоит Lаbview версии 8.5. Может потом эта опция и была проработана лучше?, но хочется сделать именно для 8.5)
Помогите пожалуйста разобраться! Тут всплывает сразу несколько вопросов:
1. Помогите победить именно этот способ задания Picture Indicator'а с цветной палитрой, и легендой. Т.е. я хочу понять, что именно я не понимаю в тонкостях использования Property Node.
Код прикладываю:
http://www.my-files.ru/ks1cca
В архиве папка с подпрограммами, запустите пожалуйста Non-Uniform illumination.vi, сгенерируйте картинки запустив программу, а потом через блок диаграмму откройте "Create Color-jet Image (SubVI)". Проблема именно в нем. Если в Non-Uniform illumination менять N, т.е. разрешение картинки, то сами картинки масштабируются, а вот цифры в ColorRange-Intensity graph размера не меняют. (Там еще и Intensity graph в под-приборе верхнего уровня размера не меняет пока-что, но в самом Create Color-jet Image (SubVI) - размер легенды меняется).
Хочу сделать именно через Pictrue indicator, т.к. есть необходимость сохранять картинку в файл для дальнейшей обработки.
2. Раз уж решил задать вопрос, воспользуюсь случаем, и спрошу еще: может кто знает, как сделать такой индикатор каким-то другим способом?
Я знаю про возможности Vision, но не хочу с ним связываться, т.к. чтобы запустить скомпилированную exe-программу написанную с использованием Vision'овхсих библиотек каждому пользователю придется покупать Vision Run-Time Engine за 500 баксов чтоли (давно я это узнавал, может ситуация и изменилась, но в любом случае, хочется обойтись без Vision)
Мне конкретно в моем Picture индикаторе не нравится еще следующее: чтобы картинка изменяла свой масштаб в главной программе (например, в Non-Uniform illumination.vi), приходится еще выносить reference из подприбора. Это занимает много места на блок-диаграмме главного подприбора. Я вообще хочу закинуть этот индикатор в user.lib и использовать как пользовательский индикатор для картинок, чтобы был всегда под рукой. Но пока что не разобрался, как (и вообще можно ли?) сделать свой control, который бы функционально состоял не на основе какого-то существующего ctrl, а включал в себя сразу элементы 2 ctrl. (как в этом примере - картинка от Image indicator, а шкала z от intensity graph)
3. Наверняка есть более простой вариант с Intensity graph. Но мне он как то с самого начала не полюбился, картинка не квадратная, изображение как-то не всегда корректно отображается, палитра скачет.. В общем, накидайте своих примеров, нестандартных Intensity graph'ов пожалуйста, если таковые имеются.
И последнее: сохраните свои примеры для Labview версии 8.5!
Заранее спасибо!