20#include "hdrl_cat_terminate.h"
22#include "hdrl_cat_table.h"
54 cpl_table *tab, hdrl_casu_result *res)
58 for (cpl_size ip = 1; ip <= ap->maxip; ip++) {
60 if (ap->parent[ip].pnop != -1) {
62 if (ap->parent[ip].pnop == ap->parent[ip].growing) {
65 if (( ap->parent[ip].pnop >= ap->ipnop &&
66 ap->parent[ip].touch == 0) &&
67 (ap->parent[ip].pnbp < (ap->parent[ip].pnop)/2) ){
79 ap->parent[ip].growing = ap->parent[ip].pnop;
100 unsigned char *mflag = ap->mflag;
102 cpl_size np = ap->parent[ip].pnop;
103 cpl_size ib = ap->parent[ip].first;
105 for (cpl_size i = 0; i < np; i++) {
106 cpl_size nn = ap->plessey[ib].y*ap->lsiz + ap->plessey[ib].x;
107 mflag[nn] = MF_POSSIBLEOBJ;
112 ib = ap->parent[ip].first;
113 for (cpl_size i = ap->ibstack - ap->parent[ip].pnop; i < ap->ibstack-1; i++) {
119 ap->bstack[ap->ibstack-1] = ib;
120 ap->ibstack -= ap->parent[ip].pnop;
123 ap->pstack[--ap->ipstack] = ip;
126 ap->parent[ip].pnop = -1;
127 ap->parent[ip].pnbp = -1;
147 for (cpl_size ip = 1; ip <= ap->maxip; ip++) {
149 if (ap->parent[ip].pnop != -1) {
151 if (ap->parent[ip].pnop > big) {
152 big = ap->parent[ip].pnop;
163 for (cpl_size ip = 0; ip <= ap->lsiz; ip++) {
165 if (ap->lastline[ip] == ipbig) ap->lastline[ip] = 0;
188 unsigned char *mflag = ap->mflag;
190 cpl_size np = ap->parent[ip].pnop;
192 ap->plarray = cpl_realloc(ap->plarray, np *
sizeof(*ap->plarray));
197 cpl_size ib = ap->parent[ip].first;
199 for (cpl_size i = 0; i < np; i++) {
201 ap->plarray[i].x = ap->plessey[ib].x + 1;
202 ap->plarray[i].y = ap->plessey[ib].y + 1;
204 ap->plarray[i].z = ap->plessey[ib].z;
205 ap->plarray[i].zsm = ap->plessey[ib].zsm;
207 cpl_size nn = ap->plessey[ib].y*ap->lsiz + ap->plessey[ib].x;
209 mflag[nn] = MF_OBJPIX;
cpl_error_code hdrl_process_results(ap_t *ap, double gain, cpl_size *nobjects, cpl_table *tab, hdrl_casu_result *res)
Process the results for each object and store them in the table.
void hdrl_restack(ap_t *ap, cpl_size ip)
Free information for an object from the ap structure.
void hdrl_apfu(ap_t *ap)
Get rid of the largest contributor in an ap structure.
void hdrl_terminate(ap_t *ap, double gain, cpl_size *nobjects, cpl_table *tab, hdrl_casu_result *res)
Check for objects that have terminated.
void hdrl_extract_data(ap_t *ap, cpl_size ip)
Put data into the Plessey array for an object.