| #------------------------------------------------------------- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #------------------------------------------------------------- |
| |
| m_img_crop = function(Matrix[Double] img_in, Integer w, Integer h, Integer x_offset, Integer y_offset) return (Matrix[Double] img_out) { |
| # crop - cut out a subregion of an image. Adapted from image_utils.dml |
| orig_w = ncol(img_in) |
| orig_h = nrow(img_in) |
| |
| start_h = (ceil((orig_h - h) / 2)) + y_offset |
| end_h = (start_h + h - 1) |
| start_w = (ceil((orig_w - w) / 2)) + x_offset |
| end_w = (start_w + w - 1) |
| |
| if((start_h < 0) | (end_h > orig_h) | (start_w < 0) | (end_w > orig_w)) { |
| print("Offset out of bounds! Returning input.") |
| img_out = img_in |
| } |
| else { |
| mask = matrix(0, rows=orig_h, cols=orig_w) |
| temp_mask = matrix(1, rows=h , cols=w ) |
| mask[start_h:end_h, start_w:end_w] = temp_mask |
| mask = matrix(mask, rows=1, cols=orig_w * orig_h) |
| img_out = matrix(removeEmpty(target=(matrix(img_in+1, 1, orig_w * orig_h)), margin="cols", select=mask) - 1, h, w) |
| } |
| } |