
All architecture is design; not all design is architecture. The difference? If you have to start over to fix it, it’s architecture. Remember those story problems in high school algebra? A lot of people hated them; I loved them. The hardest part was interpreting the story to get the equation. Get the right equation, the algebra was (mostly) easy. Get the equation wrong, you spent time and effort solving the wrong problem, with no hope of getting the right answer. Architecture is like that: get it wrong, you have to start over. The most important skill in architecture, of any kind, is recognizing the story; sometimes, you have to write it. The purpose of this chapter and the next is to help you make sure you solve the right problem. You may still get the wrong answer, stuff happens, but at least you were on the right track.
Digital images and videos are produced every day in astonishing amounts and the demand for higher quality is constantly rising which creates a need for advanced image quality assessment. Additionally, image quality assessment is important for the performance of image processing algorithms. It has been determined that image noise and artifacts can affect the performance of algorithms such as face detection and recognition [125], image saliency detection [126], and video target tracking [127]. Therefore, image quality assessment (IQA) has been a topic of intense research in the fields of image processing and computer vision. Since humans are the end consumer of multimedia signals, subjective quality metrics provide the most reliable results; however, their cost in addition to time requirements makes them unfeasible for practical applications; thus, OQM are usually preferred.
Software—the stuff of computer programs—is composed of sequence, selection, iteration, and indirection. Nothing more. Nothing less. — Robert C. Martin By now, you should have a pretty good handle on the problem you are trying to solve, and some idea of how you plan to go about it. Your problem domain abstractions are probably aligned well with abstractions in the real world, but may be too unwieldy to implement as they are. In particular, every application needs to have a user interface, business logic, and data access components, even if they don’t necessarily align with the problem domain abstractions.
Natural images usually include defocus blur due to the existence of objects at different depths from the camera. The depth richness of a scene translates into a spatially variable defocus blur in the captured image which cannot be easily undone with image deconvolution algorithms not only due to their computational requirements but also because most of the blind deconvolution algorithms assume a spatially invariant blur [20]. Automatic blur detection is an important element for several computer vision tasks such as spatially varying deblurring [21], photo editing [22], image classification [23], depth estimation [24], saliency detection [18], image segmentation [25], and digital image forensic analysis [26].
Most of the time, all you know is where you are and where you want to be. The rest is the adventure. Writing software is hard; writing good software is very hard, especially when it isn’t your primary job. I currently work in a research lab and see many highly trained scientists try to write code to support their research. To be blunt, much of the resulting software is not good. If it works at all, it is hard to use and fragile, and forget about trying to reuse it. Even well-known and well-used tools created by labs funded to build software tools suffer. (Ever try to install dcm4chee, a tool to manage medical images?)
Designing software is not very different from designing any other complex structure: Few people are good at it; no single recipe always produces a good product; and the more people involved, the smaller the probability of success. — Maarten Boasson In the last chapter, we learned that the architecture is driven mostly by non-functional requirements. Functional requirements do matter and we focus on them in this chapter.
There is extensive work in the field of no-reference image quality assessment (NR-IQA). In order to examinate different approaches we have classified these methods as edge-based methods, perceptual-based methods, sparse representation-based methods, among others.
Software development is hard, but creating good software is even harder, especially if your main job is something other than developing software. Engineer Your Software! opens the world of software en
Don’t avoid one-time development expenses at the cost of recurring operational expenses. — Michael T. Nygard Modules are the units of release, and the units of reuse, which Martin calls the Reuse/Release Equivalence principle [1]. The components in a module must be released together, and because they are in the same module, they will be reused together. This leads to two additional principles of Martin’s that we’ll get to in the next section.
Blurring is almost an omnipresent effect on natural images. The main causes of blurring in images include: (a) the existence of objects at different depths within the scene which is known as defocus blur; (b) blurring due to motion either of objects in the scene or the imaging device; and (c) blurring due to atmospheric turbulence.
A sequential Monte Carlo method is described in this chapter for tracking a single target using cognitive foveal and radar sensors [64]. The tracking algorithm is based on the cognitive fusion framework described in Chapter 2. The method uses a one time step ahead prediction of the target state to predict the structure of the measurements expected to arrive in each node. This prediction is used to configure foveal and radar nodes to improve target tracking performance.
The sensor cloud is a new model of computing paradigm for Wireless Sensor Networks (WSNs), which facilitates resource sharing and provides a platform to integrate different sensor networks where multi
The adaptive configuration of nodes in a sensor network has the potential to improve sequential estimation performance by intelligently allocating limited sensor network resources. In addition, the us
In this paper, we present an efficient and secure code dissemination technique aimed at sensor clouds. Previous code dissemination techniques were geared toward traditional wireless sensor networks. They did not take into account, the dynamic nature of a sensor cloud, where the applications running on the motes may not just be updated but changed completely in successive code disseminations. The technique presented in this paper is based upon the observation that a large amount of code is common between applications in wireless sensor networks. Our technique first discovers the code common across various wireless sensor applications. It then distributes this code in the form of functions a priori into the network. During code dissemination, these common functions are picked up by the sensors from the network. Only a part of the code needs to be transmitted from the base station. This reduces the overall transmitted code and hence the energy consumption. Since, security is important in sensor clouds, we further present a security scheme based on proxy reencryption to provide confidentiality and integrity of the code. We have implemented our scheme using two different proxy reencryption algorithms, on Mica2 and TelosB mote platforms to measure its energy consumption. We have also evaluated our scheme in terms of disseminated code size and bandwidth usage to illustrate its efficiency compared to a popular secure code dissemination technique, Seluge.
While it may be attractive to view sensors as simple transducers which convert physical quantities into electrical signals, the truth of the matter is more complex. The engineer should have a proper understanding of the physics involved in the conversion process, including interactions with other measurable quantities. A deep understanding of these interactions can be leveraged to apply sensor fusion techniques to minimize noise and/or extract additional information from sensor signals. Advances in microcontroller and MEMS manufacturing, along with improved internet connectivity, have enabled cost-effective wearable and Internet of Things sensor applications. At the same time, machine learning techniques have gone mainstream, so that those same applications can now be more intelligent than ever before. This book explores these topics in the context of a small set of sensor types. We provide some basic understanding of sensor operation for accelerometers, magnetometers, gyroscopes, and pressure sensors. We show how information from these can be fused to provide estimates of orientation. Then we explore the topics of machine learning and sensor data analytics.
In this chapter we delve into virtual platform and virtual machine technology that make up the concept of virtual design.
To investigate virtual design, a concept topic was chosen that was on the verge of being viable and something we understood enough to tackle. The authors have backgrounds in audio signal processing and so, from discussions with others, a project was devised in the area of audio lifelogging. Many of the speech processing functions had been developed previously for audio work and hence we had a good starting point. The theory will be outlined so readers can get a sense of what is involved and where potential problems might occur. First some background on lifelogging.