<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Matt,<div class=""><br class=""></div><div class="">In this case I would say image equalization and contrast stretching does match the semantics of “image_filter”.  Image filter should be any sort of image manipulation routine that returns a variant of the image that is enhanced/modified in some way.  It is not meant to be a strict definition of “filter” meaning only operations that can be implemented as a convolution or some other spatially local operation.  Think filter in the sense of the filters menu in the GIMP image editing program.</div><div class=""><br class=""></div><div class="">That said, there could be other cases where the input and output types match, but the semantics are different.  In that case, I agree with Linus that you should have different abstract algorithms in vital.  Imagine an algorithm that take an image and uses it as a query to find and return another image which is most similar in a database.  That could also have image in and image out, but I would argue that is not a filter.</div><div class=""><br class=""></div><div class="">Also keep in mind that not every function or algorithm needs to be an abstract algorithm in Vital.  The abstract algorithms should represent functional components that you can combine into an application, but where you would reasonably expect to swap out different algorithms for each abstract algorithm.  Algorithms best suited for vital/algo are components where you might expect someone to write a paper or a new software project on a better/faster way to do X, or where there are already various competing software packages providing a way to do X.</div><div class=""><br class=""></div><div class="">There may be a point in the future where we have so many image filters that we need to organize them better or create subsets of image filters with more specific applications (like blurring).  We are not at that point yet.</div><div class=""><br class=""></div><div class="">—Matt<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jan 5, 2018, at 2:04 PM, Matt Brown <<a href="mailto:matt.brown@kitware.com" class="">matt.brown@kitware.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">I think that makes sense. When naming the arrow, should there be an attempt to indicate the vital algorithm within the name? For example, for the image_filter algorithm, I called my arrows filter_gaussian_blur and filter_blur, the later half reflecting the primary OCV function being called.<br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Jan 5, 2018 at 1:54 PM, Linus Sherrill <span dir="ltr" class=""><<a href="mailto:linus.sherrill@kitware.com" target="_blank" class="">linus.sherrill@kitware.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">If we lump all image-in, image-out implementations under one algorithm (e.g. filter_image), they will all appear in one list and it will be hard to find what you are looking for. In this case, if there will be multiple implementations for <span style="font-size: 12.8px;" class="">contrast enhancement, then I think it makes sense to have a base algorithm for </span><span style="font-size: 12.8px;" class="">contrast_enhancement</span><span style="font-size: 12.8px;" class=""> even though the code looks the same as filter_image. This approach also constrains which algorithm can be configured if it is limited to </span><span style="font-size: 12.8px;" class="">contrast_enhancement, rather than using the broader category of filter_image.</span><div class=""><span style="font-size: 12.8px;" class=""><br class=""></span></div><div class=""><span style="font-size: 12.8px;" class="">Comments welcome.</span></div><div class=""><span style="font-size: 12.8px;" class=""><br class=""></span></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote"><div class=""><div class="h5">On Fri, Jan 5, 2018 at 1:41 PM, Matt Brown <span dir="ltr" class=""><<a href="mailto:matt.brown@kitware.com" target="_blank" class="">matt.brown@kitware.com</a>></span> wrote:<br class=""></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=""><div class="h5"><div dir="ltr" class="">A bit of a semantics question, but I'd like to make an ocv arrow that does histogram equalization and another that stretches contrast in an image. The vital <b class="">image_filter</b> prototype fits in that an image goes in and one comes out, with the same resolution as the input as is typical of a filter. However, semantically, I'm not sure histogram equalization is really a filter operation. Does it make sense to:<br class=""><ol class=""><li class="">Just call it a filter and be done with.</li><li class="">Create an effective duplicate of the filter algorithm and call it something more in line with contrast enhancement.</li><li class="">plan to rename filter_image to something more generic like process_image.</li></ol><p class="">Thanks,<br class="">Matt<br class=""></p></div>
<br class=""></div></div>______________________________<wbr class="">_________________<br class="">
Kwiver-users mailing list<br class="">
<a href="mailto:Kwiver-users@public.kitware.com" target="_blank" class="">Kwiver-users@public.kitware.co<wbr class="">m</a><br class="">
<a href="https://public.kitware.com/mailman/listinfo/kwiver-users" rel="noreferrer" target="_blank" class="">https://public.kitware.com/mai<wbr class="">lman/listinfo/kwiver-users</a><br class="">
<br class=""></blockquote></div><span class="HOEnZb"><font color="#888888" class=""><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="m_-8341557515863495981gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><font color="#888888" class=""><b class="">Linus Sherrill - </b></font><font color="#888888" class="">Staff R&D Engineer<br class=""></font><font color="#888888" class="">Kitware, Inc.<br class=""><a href="https://maps.google.com/?q=28+Corporate+Drive+Clifton+Park,+NY+12065&entry=gmail&source=g" class="">28 Corporate Drive</a><br class=""><a href="https://maps.google.com/?q=28+Corporate+Drive+Clifton+Park,+NY+12065&entry=gmail&source=g" class="">Clifton Park, NY 12065</a>-8662<br class="">E: <a href="mailto:linus.sherrill@kitware.com" target="_blank" class="">linus.sherrill@kitware.com</a><br class="">P: <a href="tel:(518)%20881-4400" value="+15188814400" target="_blank" class="">518.881.4400</a><br class=""></font></div></div></div></div></div>
</font></span></div>
</blockquote></div><br class=""></div>
_______________________________________________<br class="">Kwiver-users mailing list<br class=""><a href="mailto:Kwiver-users@public.kitware.com" class="">Kwiver-users@public.kitware.com</a><br class="">https://public.kitware.com/mailman/listinfo/kwiver-users<br class=""></div></blockquote></div><br class=""></div></body></html>