how to make Icy more customizable and distributing easily

70 views
Skip to first unread message

Will Ouyang

unread,
Jan 12, 2014, 11:34:01 AM1/12/14
to icy-so...@googlegroups.com
Hi everyone,
Icy is flexible imaging platform for bio-imaging and can be easily used in any non-biology field need to deal with image data. In my case,which is Non-destructive Evaluation, I even convert all kinds of 1-D signal like Eddy Current into sequence and processing it in Icy to make good use of its plugin mechanism and other wonderful features. 
Recently, I am thinking about distributing a customized version of Icy, for the reason that, the originally version is biology-oriented, and GUI elements like splash screen are biology stuff, and will be "wired" to a NDE user.
So, here comes the question, how to do this without pain, both customize methods and later distribution should be taken into account. If we simply replace the resources.jar file, we have to do it for every new release of Icy. 
In my case the following contents should be customized:
1. Splash screen and background image
These images should be replaced into other more filed-oriented images.
2. Customized file format
Although I have seen the Import and Export interface in Icy-Kernel, but it seem haven't been fully supported, I have a bunch of file format to be support, for example, DICOM/DICONDE is a widely used file format in both medical and NDE field.
3. Workspace
Maybe online workspace management should be used to group the plugins in some specific usage. 
4. Inspector
I am not sure about whether inspector tabs in Icy can be customized if I want to add my own inspector tab, is there a plugin interface or something can do this? Some plugins are suitable to attach to the inspector.
5. GUI language
It is better to translate the text into other languages, this will be friendly to non-English user, although I18n is hard for a software with loads of plugins. At least, character should be displayed correctly, for example, Chinese characters in Output tab of Inspector is displayed as small rectangles.


I think these may be done with special plugins, I mean customized images can be packaged as a plugin and try to replace the original resources.jar when the plugin is installed, but there still be many problems to be deal with.

Any suggestions will be highly appreciated.

Stephane

unread,
Jan 13, 2014, 8:02:51 AM1/13/14
to icy-so...@googlegroups.com
Hi Will,

It's true that Icy is currently Biology oriented but when we started to develop Icy we were already thinking that not only Biology can be done but any image processing related subjects =)

As i told you by email, you can replace all biology images used in the application by modifying the content of the resources.jar file but indeed it is not convenient as you need to do that for each new Icy version... I guess we can work on that so by default Icy can fetch some of its internals images in "res" folder and if the folder do not exists it just pick up them from the usual resources.jar file. This way the modifications would be permanent.
I just opened an feature request entry for that :
https://github.com/Icy-imaging/Icy-Kernel/issues/555

About the format, i am currently working to implement the Import / Export interfaces so in the next version you will be able to use that feature =)

Another important feature of Icy is the use of workspace, you can actually replace/remove the default biology oriented workspace and provide your own containing your plugins. Problem is that currently we do not allow "public" edition / submission of online workspace so we have to think about how face this problem with Fabrice.

The 2 lasts points are currently not possible and require important internals changes to be supported. I guess we can at least fix some part to properly support Chinese characters but a complete translation of the whole interface is a too heavy task and as you said, plugins which won't be translated for almost of them anyway so we prefer to stay in 100% English for the official version.
Of course you are free to fork Icy and implements some features you really need but you have to understand we cannot provide support on the changes you will make and you might have some troubles in keeping it synchronized on the last official version.

- Stephane

Fabrice de Chaumont

unread,
Jan 14, 2014, 5:59:29 AM1/14/14
to icy-so...@googlegroups.com
Hi Will !

I completely understand your needs of customization of Icy. Since the beginning, we try to make if flexible and based on a plugin architecture to comply with this kind of requirement. This is even the reason why Icy is not called 'Image Analysis Something', because we thought the Icy framework could be cool for robotics and vision, sound processing, astronomy, radar. The main link is the signal processing and all those disciplines can share libs, algorithms. So we expected that some day people start forking Icy for different fields ! So you will be the first one :) !

In your case, you would like
- Make the output compatible with Chinese chars
- translate the app
- change the inspector
- change the default workspaces
- change the background (let's say change the GUI)
- Support some specific files

I can see common interest in this: we may not support Chinese, but if you fork Icy and add a language support, maybe at some point we could merge back this feature. Still, I think plugins will not be translated, so the app would be a mix of english and an other language for the kernel... maybe it will lack of consistency but who knows, apps on google or apple stores are translated to get popular and language is probably an under estimated user-barrier. We can also use the website to ask for translation in an automated way.

If you fork (on github) for instance, we will still be connected. What I like is that you can still benefits of our devs, and we will benefits from yours :) What you be great is to still compatible between the apps.

I am very optimistic about your project and I know you are a very good dev, still I must warn you: maintaining Icy (kernel, website, support, communication, training) is a lot of work. Our team is focused on Icy (main edition?) and we will not be able to help you a lot for your own version.

In the end, the NDE edition will be based on plugin or would it be a software with only your plugins, pre-loaded on workspaces that you will create for your app ?

Last point: We have online edition of workspace, it's a feature on the website that I never enabled because 1) the online workspace editor I created is crap. 2) At the moment nobody really wants to create dedicated workspaces ! 3) The search bar is getting popular and people look for their functionalities directly by typing some keyword instead of browsing the menus.
Anyway in your case, creating a custom workspace for NDE would not be enough !

Icy NDE Edition...... sounds good !

Best,

Fabrice

Will Ouyang

unread,
Jan 14, 2014, 12:57:44 PM1/14/14
to icy-so...@googlegroups.com
Hi Stephane, Fabrice and everyone else,

Thanks for your informative and quick answer, they are helpful to me and others want to do the same thing. 
And thanks for that you like my idea, I am really appreciated about the support from QIA Team, since I am actually lonely here on my project, and I even thought about fund a NDE instrument company to support this non-profit project. You know, I am hunting for a doctoral position, and the situation is not too optimistic for me. During this (hard maybe) period, time is limited and everything is in a hurry, you may found all my code is really messy and even without any comment, this is mostly because I am trying to make more plugins and more devices based on this framework, trying to demonstrate the main idea of this project, trying to tell people that Icy is cool and polish, all instruments and inspection system can be merged into Icy easily, both developer and user can be benefit a lot from it.

Indeed, Icy is a great and cool framework to do all kinds of signal processing stuff as you expected, I think it deserve all my effort to promote it to be an industrial standard of imaging and evaluation system, I think I should make sure this project keep going, no matter what I did in the future. I believe all these work can liberate coding people from repetitive labour, as I experienced dozens of similar softwares work with specific hardware and evaluate the data and images, these softwares are developed by all kinds of companies, lab, research institute, but most of them is not well designed, functions limited and cannot be extended. As for the user, they are forced to adapt to all kinds of GUI and operation style. Data from these software are in their own format, and isolated. 

As an example, I am working on a Flat Penal Detector(FPD) to setting up a digital radiography (and CT) system these days, the agent company of the FPD developed the imaging software with about 4 men in approximately 4 months, and I want to say the software they developed is really rough, hard to use and with limited function. On the other hand, I implemented all the functions under the frameworks of Micro-manager and Icy in only 4 days, and the inspection and evaluation system I developed is far more better than theirs. So you know how confident I am to Icy framework, Icy team and the EVA project. 

Actually, I am not so professional in programming, and I even not so interested in it,  but I think many people will benefit from these works, and a platform dealing with a huge quantity of data used by many people with all kinds of hardware will enables more possibilities, for example, large scale online machine learning evaluation and diagnostic systems will be possible on a unified data layer. 

I will start the customisation soon, and as to the GUI, I think the "res folder" solution maybe enough for my case, thanks Stephane, looking forward the features being added, as well as the import/export interface :)
As to the online workspace,  I really think it is necessary for my case, let me explain, currently, many developers are developing function-oriented plugins, and the workspace is organised in topic like segmentation and detection, the topic is limited and the original workspace is covered all function topic, these people are professional in image analysis, and knows all these topic is all about. However, try to imagine that if a non-professional user without any knowledge about signal processing, he only use Icy to do some specific task, for example, Icy was used in a factory with a radiography inspection system. Maybe you have never thought about this kind of application, but I think Icy is flexible enough even for a non-research application. In this case, plugins should be intuitive enough with icons, and organised into task-oriented workspace. For example, we can make a workspace for Radiography application, integrate all tools will possibly used in the specific task, from acquire image, processing to  evaluation and comment, the whole workflow can be covered with a single workspace. People will be able to search the task name like "Radiography" and download a group of plugins. This is a easy way to distribution some hardware linked plugins too, for example, if I want to put a open hardware solution on the website, I can provide a workspace name with which user can download all the plugins which is necessary to the hardware. Totally, workspace can be in forms of specific inspection methods of NDT, or specific task in other field. I hope you can think about it, and I suggest you to enable this useful feature.

To the i18n aspect, it importance to some non-English speaker like Chinese, I actually did the translation job to ImageJ about 2 years ago, I talked with Johan(the author of Endrov) a lot about this topic, and I think online translation is really a good direction to go, I even thought about build a server to do automatic software language support. However, I don't really want to do it on the EVA project, there are mainly two reasons, 1) Icy's GUI is intuitive enough, task can be done with several clicks, and there are Icons can be recognized easily by people don't know English 2) the work involved in developing and updating will eat up all of my time.
However, I still hope that characters(and maybe some font problem) should be loaded, displayed and stored correctly, people may want to save filename, name ROI, add comments, print text with their own language. And I also hope the Icy kernel team can try to keep the compatible for the potential future translation if possible.

I know it is impossible for me to develop and maintain such a software as you did, and it is not necessary for me to do that. So I think I should stick closely with the original Icy, I think the centralised-repository philosophy of Icy is useful for the software itself, the community and also the end user, you know plugins of ImageJ is everywhere. 
I am not ready for maintaining another Icy distribution, although I will be able to implement many (maybe useful) ideas in a lower level. 

Currently, I think the NDE edition will be based on the plugin mechanism of Icy, driver adapters for Micro-manager, processing tools, and maybe even GUi resources will be in form of plugin, workspaces, I won't even need to provide a download server, people can download original Icy, and maybe type NDE in the search bar, them the whole workspace of NDE will be downloaded, and in NDE workspace, maybe I can write a plugin to show people what plugins, methods or applications are available in NDE, and people can click on the interface to install workspaces for specific application. 
In such situation, I will need more plugin interfaces to do things like change the inspector.

But I want to setup my own project website, there will be some links which point to Icy website, and some document about hardware, specific methods, and all the NDE related things. Icy website will maintain all the plugins, workspaces for the project. I will need some help from your team in many cases, for example, promotion. 

About the forum, I still think user should be separated. And another problem is China can't access google forum normally without proxy software because of the censorship policy of our government. I have no idea about this yet, maybe someone else does. maybe I don't need it and just use a blog comment hosting service like disqus will be enough.

Ok, forgive me about the tedious and buggy comment.

Fabrice de Chaumont

unread,
Jan 17, 2014, 11:41:04 AM1/17/14
to icy-so...@googlegroups.com
Hi Will,

Thank you for your detailed post !

Let me answer in the corresponding section:


On Tuesday, January 14, 2014 6:57:44 PM UTC+1, Will Ouyang wrote:
Hi Stephane, Fabrice and everyone else,

Thanks for your informative and quick answer, they are helpful to me and others want to do the same thing. 
And thanks for that you like my idea, I am really appreciated about the support from QIA Team, since I am actually lonely here on my project, and I even thought about fund a NDE instrument company to support this non-profit project. You know, I am hunting for a doctoral position, and the situation is not too optimistic for me. During this (hard maybe) period, time is limited and everything is in a hurry, you may found all my code is really messy and even without any comment, this is mostly because I am trying to make more plugins and more devices based on this framework, trying to demonstrate the main idea of this project, trying to tell people that Icy is cool and polish, all instruments and inspection system can be merged into Icy easily, both developer and user can be benefit a lot from it.

Indeed, Icy is a great and cool framework to do all kinds of signal processing stuff as you expected, I think it deserve all my effort to promote it to be an industrial standard of imaging and evaluation system, I think I should make sure this project keep going, no matter what I did in the future. I believe all these work can liberate coding people from repetitive labour, as I experienced dozens of similar softwares work with specific hardware and evaluate the data and images, these softwares are developed by all kinds of companies, lab, research institute, but most of them is not well designed, functions limited and cannot be extended. As for the user, they are forced to adapt to all kinds of GUI and operation style. Data from these software are in their own format, and isolated. 

As an example, I am working on a Flat Penal Detector(FPD) to setting up a digital radiography (and CT) system these days, the agent company of the FPD developed the imaging software with about 4 men in approximately 4 months, and I want to say the software they developed is really rough, hard to use and with limited function. On the other hand, I implemented all the functions under the frameworks of Micro-manager and Icy in only 4 days, and the inspection and evaluation system I developed is far more better than theirs. So you know how confident I am to Icy framework, Icy team and the EVA project. 

Actually, I am not so professional in programming, and I even not so interested in it,  but I think many people will benefit from these works, and a platform dealing with a huge quantity of data used by many people with all kinds of hardware will enables more possibilities, for example, large scale online machine learning evaluation and diagnostic systems will be possible on a unified data layer. 

I will start the customisation soon, and as to the GUI, I think the "res folder" solution maybe enough for my case, thanks Stephane, looking forward the features being added, as well as the import/export interface :)
As to the online workspace,  I really think it is necessary for my case, let me explain, currently, many developers are developing function-oriented plugins, and the workspace is organised in topic like segmentation and detection, the topic is limited and the original workspace is covered all function topic, these people are professional in image analysis, and knows all these topic is all about. However, try to imagine that if a non-professional user without any knowledge about signal processing, he only use Icy to do some specific task, for example, Icy was used in a factory with a radiography inspection system. Maybe you have never thought about this kind of application, but I think Icy is flexible enough even for a non-research application. In this case, plugins should be intuitive enough with icons, and organised into task-oriented workspace. For example, we can make a workspace for Radiography application, integrate all tools will possibly used in the specific task, from acquire image, processing to  evaluation and comment, the whole workflow can be covered with a single workspace. People will be able to search the task name like "Radiography" and download a group of plugins. This is a easy way to distribution some hardware linked plugins too, for example, if I want to put a open hardware solution on the website, I can provide a workspace name with which user can download all the plugins which is necessary to the hardware. Totally, workspace can be in forms of specific inspection methods of NDT, or specific task in other field. I hope you can think about it, and I suggest you to enable this useful feature.

This is something we can definitely plan !
 

To the i18n aspect, it importance to some non-English speaker like Chinese, I actually did the translation job to ImageJ about 2 years ago, I talked with Johan(the author of Endrov) a lot about this topic, and I think online translation is really a good direction to go, I even thought about build a server to do automatic software language support. However, I don't really want to do it on the EVA project, there are mainly two reasons, 1) Icy's GUI is intuitive enough, task can be done with several clicks, and there are Icons can be recognized easily by people don't know English 2) the work involved in developing and updating will eat up all of my time.

So for this specific problem, you would like this support for the console output, or for other components too ? If you wish to patch the console output and then we could merge your branch on this specific class. We will add necessary font if needed. I think this should be pretty simple... well I hope the component can deal with any character set.
 
However, I still hope that characters(and maybe some font problem) should be loaded, displayed and stored correctly, people may want to save filename, name ROI, add comments, print text with their own language. And I also hope the Icy kernel team can try to keep the compatible for the potential future translation if possible.

Sure, and as you mention for the file load it is already a problem: here in France people put "é" symbol in their file name and as BioFormat don't support it yet, we are facing this kind of little problem. So we should also send request to the creators of libs we are using too :)

I know it is impossible for me to develop and maintain such a software as you did, and it is not necessary for me to do that. So I think I should stick closely with the original Icy, I think the centralised-repository philosophy of Icy is useful for the software itself, the community and also the end user, you know plugins of ImageJ is everywhere. 

I agree, but still if somebody wants to create an other repository, we have no problem with that !
 
I am not ready for maintaining another Icy distribution, although I will be able to implement many (maybe useful) ideas in a lower level. 

Currently, I think the NDE edition will be based on the plugin mechanism of Icy, driver adapters for Micro-manager, processing tools, and maybe even GUi resources will be in form of plugin, workspaces, I won't even need to provide a download server, people can download original Icy, and maybe type NDE in the search bar, them the whole workspace of NDE will be downloaded, and in NDE workspace, maybe I can write a plugin to show people what plugins, methods or applications are available in NDE, and people can click on the interface to install workspaces for specific application. 
In such situation, I will need more plugin interfaces to do things like change the inspector.

A lot of things are plugins in Icy. The inspector is not at the moment. Do you have any idea or maybe a sketch or drawing about the way you would like you inspector to be ? The other idea would be to hide our inspector and let you create a Daemon plugin (already existing in Icy aka PluginDaemon ) that pop's up a custom inspector. This plugin will be launched as Icy starts and remain in background (like unix daemon processes). We created this feature to really change in deep functionalities of Icy. From this daemon you can listen all the events of all Icy and interact with all objects ! This is something you can even do right now with the current design of Icy.
 
But I want to setup my own project website, there will be some links which point to Icy website, and some document about hardware, specific methods, and all the NDE related things. Icy website will maintain all the plugins, workspaces for the project. I will need some help from your team in many cases, for example, promotion. 
 
 sure !


 
About the forum, I still think user should be separated. And another problem is China can't access google forum normally without proxy software because of the censorship policy of our government. I have no idea about this yet, maybe someone else does. maybe I don't need it and just use a blog comment hosting service like disqus will be enough.

At the beginning we separated the 2 streams. As we had about no user or dev, the forum was empty. So we chose to merge them. Now that we have quite a popular forum, we could think again slitting it. I know some user are afraid asking question on this forum because they believe it's a dev forum and same the other way.

About the censorship, I don't know what equivalent to google group could be found in China, maybe you can give us some clues ? We could also think about a specific forum in China, 100% in Chinese.

Best,

Fabrice
 

Will Ouyang

unread,
Jan 24, 2014, 12:20:08 PM1/24/14
to icy-so...@googlegroups.com
Hi Fabrice,
Sorry for the delay, I am currently working on the website and domain for EVA project actually. We have two domains: EvaImg.org, and EvaImg.com for EVA now.

A lot of things are plugins in Icy. The inspector is not at the moment. Do you have any idea or maybe a sketch or drawing about the way you would like you inspector to be ? The other idea would be to hide our inspector and let you create a Daemon plugin (already existing in Icy aka PluginDaemon ) that pop's up a custom inspector. This plugin will be launched as Icy starts and remain in background (like unix daemon processes). We created this feature to really change in deep functionalities of Icy. From this daemon you can listen all the events of all Icy and interact with all objects ! This is something you can even do right now with the current design of Icy.
 
Thank, yes, the daemon plugin is really a good start to go. Actually, the default Inspector is great for most our operation, what I want is to add customized tab for a plugin. The motivation for that is, some plugin frame are not suitable to be a free window, covered by sequences and other plugin frames. Technically, what I need is move the whole plugin GUI panel to a new tab of the inspector. I have seen that the ROI panel can be externalized, and maybe that will be easy to "internalized" a plugin panel. 
 
At the beginning we separated the 2 streams. As we had about no user or dev, the forum was empty. So we chose to merge them. Now that we have quite a popular forum, we could think again slitting it. I know some user are afraid asking question on this forum because they believe it's a dev forum and same the other way.
Yes, I agree, maybe it's time to split it now. 
About the censorship, I don't know what equivalent to google group could be found in China, maybe you can give us some clues ? We could also think about a specific forum in China, 100% in Chinese.
 I don't think we can find one, it's not about technique but the censorship policy. We have many website can offer Google Forum-like service, but most of them are for entertainment. However, I think groups service on douban.com is a good choice, it seems not mail list support but a common people won't need that in China. And, most technical guys can use proxy software(by GAE server or SSH) to escape the Great Fire Wall of China.
What I want to mention is that the target user of my project is not only Chinese, but all NDT/NDE(and also some medical research) people in the world. 

 
Reply all
Reply to author
Forward
0 new messages